本文目錄一覽:
- 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這幾種圖片格式,其他的都是個別支持不通用的。
求採納
原創文章,作者:ANJM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137178.html