ホームページ  >  記事  >  バックエンド開発  >  PHP 画像処理 (パート 1) - 基本

PHP 画像処理 (パート 1) - 基本

齐天大圣
齐天大圣オリジナル
2020-05-03 10:42:11152ブラウズ

以前、画像処理技術を使ったプロジェクトに出会いました。下の写真と似ています

PHP 画像処理 (パート 1) - 基本

この写真は、背景画像、QRコード画像、QRコード画像の下のテキストの3つの部分に分かれています。その中で、QR コードの画像とテキストは動的に生成され、QR コードの画像とテキストの説明はアクティビティごとに異なります。

この要件を達成するには、PHP 画像処理テクノロジーを使用する必要があります。 PHP の画像処理は非常に強力で、さまざまなことができます。一般的なものには、確認コード画像、画像透かし、サムネイルなどが含まれます。

基礎知識

まず、phpの拡張GDライブラリをインストールする必要があります。彼を手に入れたら、次の手順に進むことができます。以下では主にコードに焦点を当てます。関数の具体的な使用方法についてはドキュメントを参照してください。

キャンバスの作成

メイン関数 imagecreatetruecolor — 新しい True Color イメージを作成します。

imagecreatetruecolor    ( int $width   , int $height   ) : resource
rree

キャンバスの色を設定します

メイン関数

  • imagecolorallocate — 画像に色を割り当てます

  • imagefillll — 領域塗りつぶし

imagecolorallocate ( resource $image , int $red , in t $green , int $blue ) : int

imagecolorallocate() は、指定された RGB コンポーネントで構成される色を表す識別子を返します。赤、緑、青は、それぞれ目的の色の赤、緑、青の成分です。これらのパラメータは、0 ~ 255 の整数、または 0x00 ~ 0xFF の 16 進数です。 image で表される画像で使用される各色を作成するには、

imagecolorallocate() を呼び出す必要があります。

imagefill ( resource $image , int $x , int $y , int $color ): bool

imagefill() は、画像の座標 x、y の色で実行されます (画像の左上隅は 0) 、0) 領域の塗りつぶし (つまり、x、y 点と隣接する点と同じ色の点が塗りつぶされます)。

<?php
// 创建一个100*100的画布
$im = imagecreatetruecolor(100, 100);
// 生成png图片
header("Content-type:image/png");
imagepng($im);
imagedestroy($im);

このコードは 100*100 の赤い背景画像を生成します

画像を描画します

点と線を描画します

主な関数:

  • imagesetpixel — 単一ピクセルを描画します

  • —線分を描画します

imagesetpixel ( resource $image , int $x, int $y , int $color): bool

imagesetpixel() 画像内で色を使用します カラーは x、y 座標 (左上隅) にあります画像の は 0 , 0) 点を描画します。

imageline (リソース $image, int $x1, int $y1, int $x2, int $y2, int $color): bool

imageline() は、画像内の座標 x1、y1 から x2 まで色を使用します。 y2 に線分を描きます (画像の左上隅が 0, 0)。

<?php
header("Content-type:image/png");
// 创建一个100*100的画布
$im = imagecreatetruecolor(100, 100);
// 设置红包
$color = imagecolorallocate($im, 255, 0, 0);
// 填充画布
imagefill($im, 0, 0, $color);
// 生成图片
imagepng($im);
// 销毁资源
imagedestroy($im);

長方形を描く

<?php
$imgHandler = imagecreatetruecolor(100,100);
// 填充背景
$bgColor = imagecolorallocate($imgHandler, 200, 30, 40);
imagefill($imgHandler,0, 0, $bgColor);
// 绘制点
for ($i = 0; $i < 100; $i++) {
   $pointColor = imagecolorallocate($imgHandler, rand(0,200), rand(0,200), rand(0,200));
   imagesetpixel($imgHandler, rand(0, 100), rand(0, 100), $pointColor);
}
// 绘制线
for ($i = 0; $i < 10; $i++) {
   $lineColor = imagecolorallocate($imgHandler, rand(100, 225), rand(100, 225), rand(0, 50));
   imageline($imgHandler, 
       rand(0, 100), 
       rand(0, 100),
       rand(0, 100),
       rand(0, 100), $lineColor);
}
header("Content-Type:image/png");
imagepng($imgHandler);
imagedestroy($imgHandler);

以上がPHP 画像処理 (パート 1) - 基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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