ImageCopyResampled

第二個方法缺少設定http頭Content type值,不能正常輸出圖片,修改後正常

基本介紹

  • 中文名:ImageCopyResampled
  • 缺少:設定http頭Content type值
  • 不能:正常輸出圖片
  • 抓取:sx,sy
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)複製圖像區域到目標圖像(destination)的特定位置(dx,dy)。另外dw,dh指定複製的圖像區域在目標圖像上的大小,sw,sh指定從原圖像複製的圖像區域的大小。如果有ps經驗的話,就相當於在原圖像選擇一塊區域,剪下移動到目的圖像上,同時有拉伸縮小的操作。

代碼示例

本例將以原來的四分之一大小顯示圖像。
<?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);
?>
本例將把一幅圖像按最寬或最高 200 像素來顯示。
<?php
// 檔案路徑
$filename = 'test.jpg';
// 最大寬高
$width = 200;
$height = 200;
// 設定http頭Content type值
header('Content-type: image/jpeg');
// 獲取圖片寬高
list($width_orig, $height_orig) = getimagesize($filename);
if ($width && ($width_orig < $height_orig))
{ //高比寬大,高為200,kuan寬按比例縮小
$width = ($height / $height_orig) * $width_orig;
}else {
$height = ($width / $width_orig) * $height_orig;
}
// 改變大小。和上例一樣。
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagejpeg($image_p, null,100)
?>

相關詞條

熱門詞條

聯絡我們