本文目录一览:
- 1、php怎么生成缩略图
- 2、生成 PNG 缩略图背景怎么透明? - PHP进阶讨论
- 3、PHP略缩图怎么显示出后缀?求助,求助
- 4、php如何实时缩小图片大小
- 5、ThinkPhp 生成多张不同尺寸的缩略图
- 6、php怎么给psd图片生成缩略图???
php怎么生成缩略图
给你个函数吧
// *****生成缩略图*****
// 只考虑jpg,png,gif格式
// $srcImgPath 源图象路径
// $targetImgPath 目标图象路径
// $targetW 目标图象宽度
// $targetH 目标图象高度
function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)
{
$imgSize = GetImageSize($srcImgPath);
$imgType = $imgSize[2];
//@ 使函数不向页面输出错误信息
switch ($imgType)
{
case 1:
$srcImg = @ImageCreateFromGIF($srcImgPath);
break;
case 2:
$srcImg = @ImageCreateFromJpeg($srcImgPath);
break;
case 3:
$srcImg = @ImageCreateFromPNG($srcImgPath);
break;
}
//取源图象的宽高
$srcW = ImageSX($srcImg);
$srcH = ImageSY($srcImg);
if($srcW$targetW || $srcH$targetH)
{
$targetX = 0;
$targetY = 0;
if ($srcW $srcH)
{
$finaW=$targetW;
$finalH=round($srcH*$finaW/$srcW);
$targetY=floor(($targetH-$finalH)/2);
}
else
{
$finalH=$targetH;
$finaW=round($srcW*$finalH/$srcH);
$targetX=floor(($targetW-$finaW)/2);
}
//function_exists 检查函数是否已定义
//ImageCreateTrueColor 本函数需要GD2.0.1或更高版本
if(function_exists("ImageCreateTrueColor"))
{
$targetImg=ImageCreateTrueColor($targetW,$targetH);
}
else
{
$targetImg=ImageCreate($targetW,$targetH);
}
$targetX=($targetX0)?0:$targetX;
$targetY=($targetX0)?0:$targetY;
$targetX=($targetX($targetW/2))?floor($targetW/2):$targetX;
$targetY=($targetY($targetH/2))?floor($targetH/2):$targetY;
//背景白色
$white = ImageColorAllocate($targetImg, 255,255,255);
ImageFilledRectangle($targetImg,0,0,$targetW,$targetH,$white);
/*
PHP的GD扩展提供了两个函数来缩放图象:
ImageCopyResized 在所有GD版本中有效,其缩放图象的算法比较粗糙,可能会导致图象边缘的锯齿。
ImageCopyResampled 需要GD2.0.1或更高版本,其像素插值算法得到的图象边缘比较平滑,
该函数的速度比ImageCopyResized慢。
*/
if(function_exists("ImageCopyResampled"))
{
ImageCopyResampled($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);
}
else
{
ImageCopyResized($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);
}
switch ($imgType) {
case 1:
ImageGIF($targetImg,$targetImgPath);
break;
case 2:
ImageJpeg($targetImg,$targetImgPath);
break;
case 3:
ImagePNG($targetImg,$targetImgPath);
break;
}
ImageDestroy($srcImg);
ImageDestroy($targetImg);
}
else //不超出指定宽高则直接复制
{
copy($srcImgPath,$targetImgPath);
ImageDestroy($srcImg);
}
}
代码已经测试,成功运行!
生成 PNG 缩略图背景怎么透明? - PHP进阶讨论
nnd,刚才又看错了,我的透明的地方显示是白的,还以为正常呢,疏忽!!又仔细看了一下手册,发现可以用alpha通道来解决透明的问题,于是稍加改动就可以了[php][/php]这样就可以让原本透明的部分变透明了,用这种方法生成的png图像和直接用[i]调用原图像可以产生完全一样的效果
PHP略缩图怎么显示出后缀?求助,求助
把这行代码改了就可以了。
$filePath = $uppath.md5($filename."image"). '.'. strtolower(fileext($_FILES['file']['name']));//转为无图片后缀的名称,并加密
php如何实时缩小图片大小
PHP中缩放图像:
有两种改变图像大小的方法.
(1):ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙.
(2):ImageCopyResampled(),其像素插值算法得到的图像边缘比较平滑.质量较好(但该函数的速度比
ImageCopyResized() 慢).
两个函数的参数是一样的.如下:
ImageCopyResampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);
ImageCopyResized(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);
它们两个都是从原图像(source)中抓取特定位置(sx,sy)复制图像qu区域到目标t
图像(destination)的特定位置(dx,dy)。另外dw,dh指定复制的图像区域在目标图像上的大小,sw,sh指定从原图像复制的图像区域
的大小。如果有ps经验的话,就相当于在原图像选择一块区域,剪切移动到目的图像上,同时有拉伸或缩小的操作。
例一:
(本例子是将图片按原大小的4/1的大小显示)
?php
// 指定文件路径和缩放比例
$filename = 'test.jpg';
$percent = 0.5;
// 指定头文件Content typezhi值
header('Content-type: image/jpeg');
// 获取图片的宽高
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// 创建一个图片。接收参数分别为宽高,返回生成的资源句柄
$thumb = imagecreatetruecolor($newwidth, $newheight);
//获取源文件资源句柄。接收参数为图片路径,返回句柄
$source = imagecreatefromjpeg($filename);
// 将源文件剪切全部域并缩小放到目标图片上。前两个为资源句柄
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth,
$newheight, $width, $height);
// 输出给浏览器
imagejpeg($thumb);
?
ThinkPhp 生成多张不同尺寸的缩略图
其实很简单,那个缩略图宽度和高度可以定义多个,然后用逗号分割就好了。
//公共上传
private function _upload($width, $height, $path, $prefix) {
import('ORG.Net.UploadFile');
$upload = new UploadFile(); // 实例化上传类
$upload-maxSize = C('UPLOAD_SIZE'); // 设置附件上传大小
$upload-savePath = './Uploads/' . $path; // 设置附件上传目录
$upload-allowExts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
$upload-saveRule = 'time';
$upload-uploadReplace = true; //是否存在同名文件是否覆盖
$upload-thumb = true; //是否对上传文件进行缩略图处理
$upload-thumbMaxWidth = $width; //缩略图处理宽度
$upload-thumbMaxHeight = $height; //缩略图处理高度
$upload-thumbPrefix = $prefix; //缩略图前缀
$upload-thumbPath = './Uploads/' . $path . date('Ymd', time()) . '/'; //缩略图保存路径
$upload-thumbRemoveOrigin = true; //上传图片后删除原图片
$upload-autoSub = true; //是否使用子目录保存图片
$upload-subType = 'date'; //子目录保存规则
$upload-dateFormat = 'Ymd'; //子目录保存规则为date时时间格式
if (!$upload-upload()) {// 上传错误提示错误信息
echo json_encode(array('msg' = $this-error($upload-getErrorMsg()), 'status' = 0));
} else {// 上传成功 获取上传文件信息
$info = $upload-getUploadFileInfo();
$picname = $info[0]['savename'];
$picname = explode('/', $picname);
$picname = $picname[0] . '/' . $prefix . $picname[1];
echo json_encode(array('status' = 1, 'msg' = $picname));
}
}
然后你比如生成300*300的的图片你就定义一个方法
例如: //商品缩略图上传
public function uploadThumb() {
return $this-_upload('230,160', '230,121', 'thumb/', 'shop_,thumb_');
}
然后400*400的就又写一个方法:
//商品缩略图上传
public function uploadThumb() {
return $this-_upload('400,200', '400,200', 'thumb/', 'shop_,thumb_');
}
然后调用的不同就好了
php怎么给psd图片生成缩略图???
psd是不会通过缩略图显示的,用其他能打开它的软件可以外,其他都是没法的。你这个php生成缩略图是在什么地方生成嘛,在网页上面的话浏览器只支持jpg/gif/png这几种图片格式,其他的都是个别支持不通用的。
求采纳