ホームページ  >  記事  >  バックエンド開発  >  PHPで画像のサイズを変更する方法の例

PHPで画像のサイズを変更する方法の例

小云云
小云云オリジナル
2018-03-31 15:30:144522ブラウズ

この記事では主に PHP で画像のサイズを変更する方法の例を紹介します。お役に立てれば幸いです。

画像のサイズの変更は非常に一般的な機能要件です。PHP で画像のサイズを変更する方法を勉強してみましょう。まずは私が書いた関数を紹介します。

01
02
03$imgsrc = "http://www.nowmagic.net/images/3.jpg";
04$width = 780;
05$身長 = 420;
06
07resizejpg($imgsrc,$imgdst,$width,$height);
08
09function resizejpg($imgsrc,$imgdst,$imgwidth,$imgheight)
10{
11 //$imgsrc jpg形式画像のパス $imgdst jpg形式画像の保存ファイル名 $imgwidth 変更する幅 $imgheight 変更する高さ
12 //画像の幅と高さの値を取得します
13 $arr = getimagesize($imgsrc);                    
14 header("Content-type: image/jpg");
15
16 $imgWidth = $imgwidth;
17 $imgHeight = $imgheight;
18 // 画像を作成して色を定義します
19 $imgsrc = imagecreatefromjpeg($imgsrc);
20 $image = imagecreatetruecolor($imgWidth, $imgHeight); // カラーベースマップを作成します
21 imagecopyresampled($image, $imgsrc, 0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0], $arr[1]);
22 imagepng($image);
23 imagedestroy($image);
24}
25
26?>

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 以降が必要です。

簡単な例:

01
02// ファイル
03$filename = 'test.jpg';
04$パーセント = 0.5;
05
06// コンテンツ タイプ
07header('Content-Type: 画像/jpeg');
08
09// 新しい次元を手に入れましょう
10リスト($width, $height) = getimagesize($filename);
11$new_width = $width * $percent;
12$new_height = $height * $percent;
13
14// リサンプル
15$image_p = imagecreatetruecolor($new_width, $new_height);
16$image = imagecreatefromjpeg($filename);
17imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
18
19// 出力
20imagejpeg($image_p, null、100);
21?>

示例2:

view source

print?

01
02// ファイル
03$filename = 'test.jpg';
04
05// 最大の高さと幅を設定します
06$width = 200;
07$身長 = 200;
08
09// コンテンツ タイプ
10header('Content-Type: 画像/jpeg');
11
12// 新しい次元を手に入れましょう
13リスト($width_orig, $height_orig) = getimagesize($filename);
14
15$ratio_orig = $width_orig/$height_orig;
16
17if ($width/$height > $ratio_orig) {
18 $width = $height*$ratio_orig;
19} else {
20 $height = $width/$ratio_orig;
21}
22
23// リサンプル
24$image_p = imagecreatetruecolor($width, $height);
25$image = imagecreatefromjpeg($filename);
26imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
27
28// 出力
29imagejpeg($image_p, null、100);
30?>

画像サイズを変更するには 2 つの方法があります:

  • ImageCopyResize() 関数はすべての GD バージョンで有効ですが、画像をスケーリングするアルゴリズムは荒いです。

  • ImageCopyResamples() のピクセル補間アルゴリズムによって取得された画像のエッジは比較的滑らかです。 (ただし、この関数は ImageCopyResize() よりも遅くなります)。

次のように、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);

例:

01
02$src = ImageCreateFromJPEG('php.jpg');
03$width = ImageSx($src);
04$身長 = ImageSy($src);
05$x = $width/2;
06$y = $身長/2;
07$dst = ImageCreateTrueColor($x,$y);
08ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$width,$height);
09header('コンテンツタイプ : image/png');
10ImagePNG($det);
11?>

以上がPHPで画像のサイズを変更する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。