ホームページ > バックエンド開発 > PHPチュートリアル > (上級) PHP 画像処理関数とコード例

(上級) PHP 画像処理関数とコード例

黄舟
リリース: 2023-03-05 12:34:01
オリジナル
1254 人が閲覧しました

1. 画像リソースを作成します

1

2

3

4

5

6

imagecreatetruecolor(width,height);

imagecreatefromgif(图片名称);

imagecreatefrompng(图片名称);

imagecreatefromjpeg(图片名称);画出各种图像 imagegif(图片资源,保存路径);

imagepng()

imagejpeg();

ログイン後にコピー

2. 画像属性を取得します
imagesx(res//width
imagesy(res//height
getimagesize(file path))
インデックス 0 には画像の幅が含まれますのピクセル値、インデックス 1 には画像の高さのピクセル値が含まれます。インデックス 2 は画像タイプのタグです: 1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP、7。 = TIFF(インテル バイト オーダー)、8 = TIFF (モトローラ バイト オーダー)、9 = JPC、10 = JP2、11 = JPX、12 = JB2、13 = SWC、14 = IFF、15 = WBMP、16 = XBM。タグは PHP 4.3 と同じです。.0 は、新しく追加された IMAGETYPE 定数に対応します。インデックス 3 は、「height="yyy" width="xxx"」という内容のテキスト文字列で、画像リソースを破棄するために直接使用できます。 imagedestroy(画像リソース);

3. 透明処理

PNG と jpeg の透明色は正常ですが、gif だけが異常です


1

2

3

imagecolortransparent(resource image [,int color])//将某个颜色设置成透明色

imagecolorstotal()

imagecolorforindex();

ログイン後にコピー

4. ウォーターマーク (テキスト、画像) を追加します

文字列エンコード変換string iconv ( string $in_charset , string $out_charset , string $str )


6. 画像の回転

imagerotate() // 指定した角度で​​画像を反転


7. 画像の反転

X 軸と Y 軸に沿って反転


8. シャープ化

1

2

imagecopyresized()

imagecopyresampled();

ログイン後にコピー

画像にグラフィックを描画します $img=imagecreatefromgif("./images/map.gif");


コードは次のとおりです:

1

2

imagecolorsforindex()

imagecolorat()

ログイン後にコピー


画像の通常のスケーリング

コードは次のとおりです:

1

2

3

4

5

6

7

8

9

<?PHP

 /**

 * 图片锐化处理

 */

 $red= imagecolorallocate($img, 255, 0, 0);

 imageline($img, 0, 0, 100, 100, $red);

 imageellipse($img, 200, 100, 100, 100, $red);

 imagegif($img, "./images/map2.gif");

 imagedestroy($img);

ログイン後にコピー

画像の拡大縮小、透明色処理なし
コードは次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

$filename="./images/hee.jpg";

 $per=0.3;

 list($width, $height)=getimagesize($filename);

 $n_w=$width*$per;

 $n_h=$width*$per;

 $new=imagecreatetruecolor($n_w, $n_h);

 $img=imagecreatefromjpeg($filename);

 //拷贝部分图像并调整

 imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);

 //图像输出新图片、另存为

 imagejpeg($new, "./images/hee2.jpg");

 imagedestroy($new);

 imagedestroy($img);

ログイン後にコピー

Gif 透明色処理
コードは次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function thumn($background, $width, $height, $newfile) {

 list($s_w, $s_h)=getimagesize($background);//获取原图片高度、宽度

 if ($width && ($s_w < $s_h)) {

 $width = ($height / $s_h) * $s_w;

 } else {

 $height = ($width / $s_w) * $s_h;

 }

 $new=imagecreatetruecolor($width, $height);

 $img=imagecreatefromjpeg($background);

 imagecopyresampled($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);

 imagejpeg($new, $newfile);

 imagedestroy($new);

 imagedestroy($img);

 }

 thumn("images/hee.jpg", 200, 200, "./images/hee3.jpg");

ログイン後にコピー


画像のトリミング

コードは次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

function thumn($background, $width, $height, $newfile) {

 list($s_w, $s_h)=getimagesize($background);

 if ($width && ($s_w < $s_h)) {

 $width = ($height / $s_h) * $s_w;

 } else {

 $height = ($width / $s_w) * $s_h;

 }

 $new=imagecreatetruecolor($width, $height);

 $img=imagecreatefromgif($background);

 $otsc=imagecolortransparent($img);

 if($otsc >=0 && $otst < imagecolorstotal($img)){//判断索引色

 $tran=imagecolorsforindex($img, $otsc);//索引颜色值

 $newt=imagecolorallocate($new, $tran["red"], $tran["green"], $tran["blue"]);

 imagefill($new, 0, 0, $newt);

 imagecolortransparent($new, $newt);

 }

 imagecopyresized($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);

 imagegif($new, $newfile);

 imagedestroy($new);

 imagedestroy($img);

 }

 thumn("images/map.gif", 200, 200, "./images/map3.gif");

ログイン後にコピー


画像とテキストの透かし

。 コードは次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

/**

* 图片裁剪处理

* edit by www.jbxue.com

*/

function cut($background, $cut_x, $cut_y, $cut_width, $cut_height, $location){

$back=imagecreatefromjpeg($background);

$new=imagecreatetruecolor($cut_width, $cut_height);

imagecopyresampled($new, $back, 0, 0, $cut_x, $cut_y, $cut_width, $cut_height,$cut_width,$cut_height);

imagejpeg($new, $location);

imagedestroy($new);

imagedestroy($back);

}

cut("./images/hee.jpg", 440, 140, 117, 112, "./images/hee5.jpg");

?>

ログイン後にコピー


画像の回転

画像を水平方向に反転します。コードは次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<?PHP /**

* 图片添加文字水印

*/

function mark_text($background, $text, $x, $y){

$back=imagecreatefromjpeg($background);

$color=imagecolorallocate($back, 0, 255, 0);

imagettftext($back, 20, 0, $x, $y, $color, "simkai.ttf", $text);

imagejpeg($back, "./images/hee7.jpg");

imagedestroy($back);

}

mark_text("./images/hee.jpg", "细说PHP", 150, 250);

//图片水印

function mark_pic($background, $waterpic, $x, $y){

$back=imagecreatefromjpeg($background);

$water=imagecreatefromgif($waterpic);

$w_w=imagesx($water);

$w_h=imagesy($water);

imagecopy($back, $water, $x, $y, 0, 0, $w_w, $w_h);

imagejpeg($back,"./images/hee8.jpg");

imagedestroy($back);

imagedestroy($water);

}

mark_pic("./images/hee.jpg", "./images/gaolf.gif", 50, 200);

?>

ログイン後にコピー

上記は (高度な) PHP 画像処理関数とコード例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注意してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート