この記事では主に PHP で画像のサイズを変更する方法の例を紹介します。お役に立てれば幸いです。
画像のサイズの変更は非常に一般的な機能要件です。PHP で画像のサイズを変更する方法を勉強してみましょう。まずは私が書いた関数を紹介します。
03 | $imgsrc = "http://www.nowmagic.net/images/3.jpg"; |
07 | resizejpg($imgsrc,$imgdst,$width,$height); |
09 | function resizejpg($imgsrc,$imgdst,$imgwidth,$imgheight) |
11 | //$imgsrc
jpg形式画像のパス $imgdst jpg形式画像の保存ファイル名 $imgwidth 変更する幅 $imgheight 変更する高さ |
13 | $arr = getimagesize($imgsrc); |
14 | header("Content-type:
image/jpg"); |
16 | $imgWidth = $imgwidth; |
17 | $imgHeight = $imgheight; |
19 | $imgsrc =
imagecreatefromjpeg($imgsrc); |
20 | $image =
imagecreatetruecolor($imgWidth, $imgHeight); // カラーベースマップを作成します |
21 | imagecopyresampled($image, $imgsrc,
0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0], $arr[1]); |
imagecopyresampled
imagecopyresampled -- 画像のコピー部分をリサンプルし、サイズを変更します。
int imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
imagecopyresampled() 画像内の正方形の領域を別の画像にコピーします、ピクセル値を滑らかに補間することで、とりわけ、優れた鮮明さを維持しながら画像のサイズを縮小します。 dst_im と src_im は、それぞれターゲット イメージとソース イメージの識別子です。ソースとデスティネーションの幅と高さが異なる場合、画像はそれに応じて縮小または伸縮します。座標は左上隅を指します。この関数は、同じイメージ内の領域をコピーするために使用できます (dst_im と src_im が同じ場合) が、領域が重複している場合の結果は予測できません。
注: パレット画像の制限 (255+1 色) により問題が発生します。画像のリサンプリングまたはフィルタリングには 255 を超える色が必要になることが多く、新しいリサンプリングされたピクセルとその色の計算には近似値が使用されます。パレット画像に新しい色を割り当てようとするときに、それが失敗した場合は、(理論的に) 計算された最も近い色が選択されます。これは必ずしも視覚的に最も近い色であるとは限りません。これにより、空白 (または視覚的に空白) の画像など、奇妙な結果が生じる可能性があります。この問題を回避するには、imagecreatetruecolor() で作成されたものなど、トゥルーカラー イメージをターゲット イメージとして使用します。
注: imagecopyresampled() には GD 2.0.l 以降が必要です。
簡単な例:
03 | $filename = 'test.jpg'; |
07 | header('Content-Type:
画像/jpeg'); |
10 | リスト($width, $height)
= getimagesize($filename); |
11 | $new_width = $width * $percent; |
12 | $new_height = $height * $percent; |
15 | $image_p =
imagecreatetruecolor($new_width, $new_height); |
16 | $image =
imagecreatefromjpeg($filename); |
17 | imagecopyresampled($image_p, $image,
0, 0, 0, 0, $new_width, $new_height, $width, $height); |
20 | imagejpeg($image_p,
null、100); |
示例2:
view
source
print?
03 | $filename = 'test.jpg'; |
10 | header('Content-Type:
画像/jpeg'); |
13 | リスト($width_orig, $height_orig)
= getimagesize($filename); |
15 | $ratio_orig = $width_orig/$height_orig; |
17 | if ($width/$height > $ratio_orig)
{ |
18 | $width = $height*$ratio_orig; |
20 | $height = $width/$ratio_orig; |
24 | $image_p =
imagecreatetruecolor($width, $height); |
25 | $image =
imagecreatefromjpeg($filename); |
26 | imagecopyresampled($image_p, $image,
0, 0, 0, 0, $width, $height, $width_orig, $height_orig); |
29 | imagejpeg($image_p,
null、100); |
画像サイズを変更するには 2 つの方法があります:
次のように、2 つの関数のパラメータは同じです:
1 |
imageCopyResampled(dest,src,dy,dx,sx,sy,dw,dh,sw,sh); |
2 |
imageCopyResize(dest,src,dy,dx,sx,sy,dw,dh,sw,sh); |
例:
02 | $src =
ImageCreateFromJPEG('php.jpg'); |
03 | $width =
ImageSx($src); |
07 | $dst =
ImageCreateTrueColor($x,$y); |
08 | ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$width,$height); |
09 | header('コンテンツタイプ
: image/png'); |
以上がPHPで画像のサイズを変更する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。