ホームページ >バックエンド開発 >PHPチュートリアル >Imagick を使用して PHP でさまざまな画像効果を実現する例、_PHP チュートリアル

Imagick を使用して PHP でさまざまな画像効果を実現する例、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:09:281061ブラウズ

Imagick を使用して PHP でさまざまな画像効果を実現する例

imagick は強力な画像処理ライブラリです。
翻訳と言っていますが、実際にはimagickの主な機能を簡単に紹介したり、より実用的だと思われる機能とその使用例を紹介したものです。
私の英語レベルには限界があるため、より一般的な言語またはより実用的な言語を使用して説明します。
まずは素晴らしいエフェクトのセットをお楽しみください:

オフセット画像:

例:

コードをコピーします コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->rollImage(20,39); エコー $image
?>




thumbnailImage($width,$height) 画像サイズを変更します

例:


コードをコピーします

コードは次のとおりです: ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->サムネイル画像(100,0); エコー $image
?>




addNoiseImage(int $noise_type [, int $channel= Imagick::CHANNEL_ALL ]);
特徴:
画像にランダムなノイズを追加します
インターフェロンを追加

コードをコピーします
コードは次のとおりです:


ノイズ定数 ( $noise_type タイプ)
imagick::NOISE_UNIFORM (整数)

imagick::NOISE_GAUSSIAN (整数) imagick::NOISE_MULTIPLICATIVEGAUSSIAN (整数) imagick::NOISE_IMPULSE (整数) imagick::NOISE_LAPLACIAN (整数) imagick::NOISE_POISSON (整数)
チャネル定数 ( $channel type)
imagick::CHANNEL_UNDEFINED (整数)
imagick::CHANNEL_RED (整数)
imagick::CHANNEL_GRAY (整数)
imagick::CHANNEL_CYAN (整数)
imagick::CHANNEL_GREEN (整数)
imagick::CHANNEL_MAGENTA (整数)
imagick::CHANNEL_BLUE (整数)
imagick::CHANNEL_YELLOW (整数)
imagick::CHANNEL_ALPHA (整数)
imagick::CHANNEL_OPACITY (整数)
imagick::CHANNEL_MATTE (整数)
imagick::CHANNEL_BLACK (整数)
imagick::CHANNEL_INDEX (整数)
imagick::CHANNEL_ALL (整数)


例:



コードをコピーします

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

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->サムネイル画像(100,0); $image->addNoiseImage(imagick::NOISE_POISSON,imagick::CHANNEL_OPACITY); エコー $image
?> annotateImage テキスト画像を作成します

例:



コードをコピーします

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

$image = 新しい Imagick(); $draw = 新しい ImagickDraw(); $pixel = 新しい ImagickPixel( 'グレー' ); $image->newImage(800, 75, $pixel); $pixel->setColor('black'); $draw->setFont('ブックマン-デミイタリック'); $draw->setFontSize( 30 ); $image->annotateImage($draw, 10, 45, 0, '機敏な茶色のキツネが怠惰な犬を飛び越えます'); $image->setImageFormat('png'); header('コンテンツタイプ: image/png'); エコー $image ?>


blurImage(float $radius , float $sigma [, int $channel ]) 画像ぼかし処理にぼかしフィルターを追加 パラメータ:

コードをコピーします

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

int $channel :
imagick::CHANNEL_UNDEFINED (整数)
imagick::CHANNEL_RED (整数)
imagick::CHANNEL_GRAY (整数)
imagick::CHANNEL_CYAN (整数)
imagick::CHANNEL_GREEN (整数)
imagick::CHANNEL_MAGENTA (整数)
imagick::CHANNEL_BLUE (整数)
imagick::CHANNEL_YELLOW (整数)
imagick::CHANNEL_ALPHA (整数)
imagick::CHANNEL_OPACITY (整数)
imagick::CHANNEL_MATTE (整数)
imagick::CHANNEL_BLACK (整数)
imagick::CHANNEL_INDEX (整数)
imagick::CHANNEL_ALL (整数)

コードをコピーします コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->blurImage(5,3); エコー $image
?>



borderImage (mixed $bordercolor , int $width , int $height ) 画像の境界線処理
例:

コードをコピーします
コードは次のとおりです: ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->borderImage($color,5,4);
$image->blurImage(5,5,imagick::CHANNEL_GREEN); エコー $image
?>




charcoalImage ( float $radius , float $sigma ) 画像スケッチ処理

パラメータの説明:
$radius: 小さいほど薄くなります。
$sigma: インクが大きいほどインクは暗くなり、その逆も同様です。
例:

コードをコピーします

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

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->borderImage($color,5,4); $image->charcoalImage(0.0001,0.001); //$image->blurImage(5,5,imagick::CHANNEL_GREEN); エコー $image
?>

chopImage ( int $width , int $height , int $x , int $y )
パラメータの説明: 画像領域の特定の範囲を削除します
パラメータについては説明しません。一目でわかるでしょう。
colorizeImage( 混合 $colorize , 混合 $opacity ) 混合塗りつぶし色
$色を色付けする
$不透明な透明度
例:



コードをコピーします

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

/*

フィルムのネガ効果 */
ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->negateImage(false); $image->colorizeImage('#000',1.0); エコー $image
?>



embossImage ( float $radius 、 float $sigma )

機能: グレースケール 3D 画像を返します。あまり良くありません。
例:

コードをコピーします
コードは次のとおりです:


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->embossImage(1,1); エコー $image
?>



(2 つのレンダリング)


flipImage(void)
機能: 画像の反射(垂直反転)を作成します
例:

コードをコピーします
コードは次のとおりです: ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->flipImage(); エコー $image
?>



flopImage ( void )

機能: 画像を水平に反転します


コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->flopImage(); エコー $image
?>



frameImage(mixed $matte_color,int $width, int $height,int $inner_bevel, int $outer_bevel)
機能: 3D画像の境界線を作成します
パラメータの説明: $matte_color: カラー
$inner_bevel: 境界線の内側の傾斜
$outer_bevel: 外側境界線の傾斜
例:



コードをコピーします
コードは次のとおりです: ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->frameImage($color,11,11,1,10); エコー $image
?>



注:
$width (幅) は $inner_bevel (境界線の内部傾斜) より小さくすることはできません

Imagick::gammaImage (float $gamma [,int $channel= Imagick::CHANNEL_ALL])

機能: 画像のガンマを調整します
パラメータの説明:
float $gamma: ガンマ係数値
$channel のデフォルトは Imagick::CHANNEL_ALL です
Imagick::CHANNEL_ALL
例 1:


コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->gammaImage(30); エコー $image
?>
例2:

コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->gammaImage(30); エコー $image
?>



gaussianBlurImage ( float $radius , float $sigma [, int $channel= Imagick::CHANNEL_ALL ] )
機能: 写真のガウスぼかしと同様のガウスぼかし処理 パラメータの説明: float $radius: 中心ピクセルを除く、ガウスぼかしの半径 (ピクセル単位)。 float $sigma: ガウスの標準偏差 (ピクセル単位)。このパラメータが最も重要だと思います。
int $channel: 画像のカラー モード。



コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->gaussianBlurImage(30,3); エコー $image
?>

levelImage ( float $blackPoint , float $gamma , float $whitePoint [, int $channel= Imagick::CHANNEL_ALL ] )

機能: 画像のレベルを調整します
パラメータの説明
コードをコピーします コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->levelImage(4,4,4); エコー $image
?>


例 2:


コードをコピーします
コードは次のとおりです:


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->levelImage(200,200,200,imagick::CHANNEL_GREEN); エコー $image ?>
magnifyImage( void )

関数の説明: 画像を元のサイズの 2 倍に比例して拡大縮小する便利なメソッドです (画像を元のサイズの 2 倍に比例して拡大縮小する便利なメソッドです)。 例:



コードをコピーします

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

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->magnifyImage(); エコー $image
?>



medianFilterImage ( float $radius )
機能: Photoshopのパレットナイフフィルターに少し似た特別なフィルター

コードをコピーします
コードは次のとおりです: ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->medianFilterImage(5); エコー $image
?>



minifyImage(void)

機能: 画像をサイズの半分に比例して拡大縮小します (画像をサイズの半分に比例して拡大縮小します)
例:



コードをコピーします

コードは次のとおりです:
ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->minifyImage(); エコー $image
?>
modulateImage ( float $brightness 、 float $saturation 、 float $hue )
機能: 画像の明るさ、彩度、色相を制御および調整します。
パラメータの説明:
float $brightness: 明るさ
float $saturation: 彩度
float $hue 色相
例 1:



コードをコピーします

コードは次のとおりです:
ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->modulateImage(100,1,100); エコー $image
?>


例 2:
コードをコピーします コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $image->modulateImage(250,1,250); エコー $image
?>



motionBlurImagemotionBlurImage ( float $radius , float $sigma , float $angle [, int $channel= Imagick::CHANNEL_DEFAULT ] )
機能: Photoshopのモーションブラーフィルター機能に似たモーションブラーをシミュレートします
パラメータの説明:
float $radius: 中心ピクセルを含まないガウス半径。
float $sigma: ガウスの標準偏差 (ピクセル単位)。 【重要なパラメータ】 float $angle: ぼかし角度。 int $channel: 画像のカラー モード。デフォルトは Imagick::CHANNEL_DEFAULT です 例 1:

コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->motionBlurImage (61,10,10); エコー $image
?>

例 2:


コードをコピーします

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


ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->motionBlurImage (201,10,100); エコー $image ?>
oilPaintImage (float $radius):

機能説明: 油絵フィルターをシミュレートします
例:



コードをコピーします

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

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->oilPaintImage(1); エコー $image
?>

radialBlurImage ( float $angle [, int $channel= Imagick::CHANNEL_ALL ] )
機能: 画像を放射状にぼかします
コードをコピーします コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->radialBlurImage(30); エコー $image
?>





raiseImage ( int $width 、 int $height 、 int $x 、 int $y 、 bool $raise )
機能の説明: シミュレートされた 3D ボタンのような効果を作成します

コードをコピーします
コードは次のとおりです:

ini_set('表示エラー',1); header('コンテンツタイプ: 画像/jpeg'); $image = 新しい Imagick('1.jpg'); $color=new ImagickPixel(); $color->setColor("rgb(220,220,220)"); $image->raiseImage(10,10,3,5,6); エコー $image ?>


付録1: 画像サイズの縮小、半透明の境界線の追加、Exif情報の読み込み、指定された要件に従って画像上に表示するリクエスト




コードをコピーします

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

$towidth = '500'; $toheight = '700' //画像のサイズを変更するときに許可される最大の幅と高さを設定します
; $sourcefile = './b.jpg' //画像ファイルのパスを定義します
; //$image->writeImage('./b.jpg.bak') //この画像をバックアップできます
; $myimage = new Imagick( $sourcefile ) //画像ファイルを読み込みます
$exifobject = my_exif( $myimage ); //自作関数、exif情報(撮影データ)を読み込み、必要に応じてexif情報を整理してオブジェクトを返す
//$myimage->setImageFormat('jpeg') //画像を jpg 形式に変換します
$myimage->setCompressionQuality( 100 ); // jpg の圧縮品質を 1 ~ 100 で設定します
$myimage->enhanceImage(); //ノイズを除去します
$sourcewidth = $myimage->getImageWidth() // 読み込んだ画像の元のサイズを取得します
if ( $sourcewidth > $towidth )
{
$myimage->scaleImage( $towidth, $toheight, true ); //画像サイズを調整します
}
$myimage->raiseImage(8, 8, 0, 0, 1) //半透明の境界線を追加します
$resizewidth = $myimage->getImageWidth() //調整された画像サイズを読み取ります
; $resizeheight = $myimage->getImageHeight(); $drawback = new ImagickDraw(); //描画オブジェクトをインスタンス化し、exif 情報用に半透明の黒い背景を描画します
$drawback->setFillColor( new ImagickPixel('#000000') ); //塗りつぶしの色を黒に設定します
$drawback->setFillOpacity(0.6); //塗りつぶしの透明度は 0.6、パラメータは 0.1-1、1 は不透明です
$drawback->rectangle( $resizewidth / 2 - 190, $resizeheight - 50, $resizewidth / 2 + 190, $resizeheight - 12 ); //四角形パラメータをそれぞれ左上隅 x、y、右下隅 x で描画します。 、よ
$myimage->drawImage( $drawback ); //画像内に長方形の枠を描画することを確認します
$draw = new ImagickDraw(); //描画オブジェクトをインスタンス化し、exif テキスト情報を描画して画像に埋め込みます
$draw->setFont( './xianhei.ttf' ); // テキストのフォントを設定します。これには ttf または ttc フォントが必要で、絶対パスまたは相対パスを指定できます
$draw->setFontSize( 11 ); //フォントサイズを設定します
$draw->setTextAlignment(2); //テキストの配置、2 は中央揃えです
$draw->setFillColor( '#FFFFFF' ); //テキストの塗りつぶしの色
$myimage->annotateImage( $draw, $resizewidth / 2, $resizeheight - 39, 0, $exifobject->row1 ); // テキストの最初の行を中央に描画します
$myimage->annotateImage( $draw, $resizewidth / 2, $resizeheight - 27, 0, $exifobject->row2 ); // テキストの 2 行目を中央に描画します
$myimage->annotateImage( $draw, $resizewidth / 2, $resizeheight - 15, 0, $exifobject->row3 ); // テキストの 3 行目を中央に描画します
/* ヘッダー付きの画像を出力します */
header( 'Content-type: image/jpeg' ); //php ファイルの出力 MIME タイプは jpeg 画像です
echo $myimage // 現在の PHP ページに画像を出力します
//$image->writeImage('./b.new.jpg'); //現在のPHPプログラムで画像を出力する必要がない場合は、画像をディスクに書き込む関数と上記の設定ヘッダーを使用します。取り外しも可能です
$myimage->clear(); $myimage->destroy(); // リソースを解放します
//自作関数、exif情報を読み取ってオブジェクトを返す
関数 my_exif( $myimage )
{
$exifArray = array( 'exif:Model' => '不明', 'exif:DateTimeOriginal' => '不明', 'exif:ExposureProgram' => '不明', 'exif:FNumber' => ' 0/10'、'exif:ExposureTime' => '0/10'、'exif:ISOSpeedRatings' => '不明'、
'exif:MeteringMode' => '不明', 'exif:Flash' => 'フラッシュをオフにする', 'exif:FocalLength' => '不明', ' exif:ExifImageLength' => 'Unknown' ); //写真のexif情報が読み取れない場合の操作ミスを防ぐために一部の情報を初期化します
$exifArray = $myimage->getImageProperties( "exif:*" ); //画像の exif 情報を読み取り、$exifArray 配列に格納します
//元の配列を表示する必要がある場合は、print_r($exifArray) を使用できます
; $r->row1 = 'カメラ:' . $exifArray['exif:Model']; $r->row1 = $r->row1 . $exifArray['exif:DateTimeOriginal']; スイッチ ( $exifArray['exif:ExposureProgram'] )
{
ケース 1:
$exifArray['exif:ExposureProgram'] = "マニュアル(M)"; 休憩; //手動制御
ケース 2:
$exifArray['exif:ExposureProgram'] = "自動プログラム (P)"; ブレーク; // 通常のプログラム
ケース 3:
$exifArray['exif:ExposureProgram'] = "絞り優先 (A,Av)"; 休憩; //絞り優先
ケース 4:
$exifArray['exif:ExposureProgram'] = "シャッター優先順位 (S,Tv)"; ブレーク; //シャッター優先
ケース 5:
$exifArray['exif:ExposureProgram'] = "スローシャッター"; Break; //プログラムクリエイティブ (スロープログラム)
ケース 6:
$exifArray['exif:ExposureProgram'] = "運動モード"; Break; //プログラムアクション(高速プログラム)
ケース 7:
$exifArray['exif:ExposureProgram'] = "ポートレート"; 休憩; //ポートレート
ケース 8:
$exifArray['exif:ExposureProgram'] = "風景"; 休憩 //風景
デフォルト:
$exifArray['exif:ExposureProgram'] = "その他"; }
$r->row1 = $r->row1 . $exifArray['exif:ExposureProgram']; $exifArray['exif:FNumber'] =explode( '/', $exifArray['exif:FNumber'] ); $exifArray['exif:FNumber'] = $exifArray['exif:FNumber'][0] / $exifArray['exif:FNumber'][1]; $r->row2 = 'Aperture:F/' . $exifArray['exif:FNumber']; $exifArray['exif:ExposureTime'] =explode( '/', $exifArray['exif:ExposureTime'] ); if ( ($exifArray['exif:ExposureTime'][0] / $exifArray['exif:ExposureTime'][1]) >= 1 )
{
$exifArray['exif:ExposureTime'] = sprintf( "%.1fs", (float)$exifArray['exif:ExposureTime'][0] / $exifArray['exif:ExposureTime'][1] ); }その他
{
$exifArray['exif:ExposureTime'] = sprintf( "1/%ds", $exifArray['exif:ExposureTime'][1] / $exifArray['exif:ExposureTime'][0] ); }
$r->row2 = $r->row2 . $exifArray['exif:ExposureTime']; $r->row2 = $r->row2 . $exifArray['exif:ISOSpeedRatings']; $exifArray['exif:ExposureBiasValue'] =explode( "/", $exifArray['exif:ExposureBiasValue'] ); $exifArray['exif:ExposureBiasValue'] = sprintf( "%1.1feV", ((float)$exifArray['exif:ExposureBiasValue'][0] / $exifArray['exif:ExposureBiasValue'][1] * 100) / 100 ); if ( (float)$exifArray['exif:ExposureBiasValue'] > 0 )
{
$exifArray['exif:ExposureBiasValue'] = "+" . $exifArray['exif:ExposureBiasValue']; }
$r->row2 = $r->row2 . $exifArray['exif:ExposureBiasValue']; スイッチ ( $exifArray['exif:MeteringMode'] )
{
ケース 0:
$exifArray['exif:MeteringMode'] = "不明"; 休憩
ケース 1:
$exifArray['exif:MeteringMode'] = "マトリックス"; 休憩
ケース 2:
$exifArray['exif:MeteringMode'] = "中央重点平均"; 休憩
ケース 3:
$exifArray['exif:MeteringMode'] = "スポット測光"; 休憩
ケース 4:
$exifArray['exif:MeteringMode'] = "マルチポイント測光"; 休憩
デフォルト:
$exifArray['exif:MeteringMode'] = "その他"; }
$r->row2 = $r->row2 . $exifArray['exif:MeteringMode']; スイッチ ( $exifArray['exif:Flash'] )
{
ケース 1:
$exifArray['exif:Flash'] = "フラッシュをオンにする"
休憩
}
$r->row2 = $r->row2 . $exifArray['exif:Flash']; if ( $exifArray['exif:FocalLengthIn35mmFilm'] )
{
$r->row3 = '等価焦点距離:' . $exifArray['exif:FocalLengthIn35mmFilm']
; }その他
{
$exifArray['exif:FocalLength'] =explode( "/", $exifArray['exif:FocalLength'] ); $exifArray['exif:FocalLength'] = sprintf( "%4.1fmm", (double)$exifArray['exif:FocalLength'][0] / $exifArray['exif:FocalLength'][1] ); $r->row3 = '焦点距離:' . $exifArray['exif:FocalLength']; }
$r->row3 = $r->row3 . $exifArray['exif:ExifImageWidth'] 'px'; if ( $exifArray['exif:Software'] )
{
$r->row3 = $r->row3 . ' 後で:' . $exifArray['exif:Software']; }
$r を返します
}




付録 2: 画像透かしの処理

コードをコピーします

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

//透かし画像を取得します $logo = 新しい Imagick("logo.png"); $logo->setImageResolution(0.01,0.03);
//Imagick オブジェクトを作成し、処理するソース画像を取得します
$im = 新しい Imagick( "old_large_img_2.jpg" );
//ソース画像の幅と高さを取得します
$srcWH = $im->getImageGeometry();
//幅と高さの設定に比例して画像を拡大縮小します
if($srcWH['width']>710){
$srcW['幅'] = 710; $srcH['高さ'] = $srcW['幅']/$srcWH['幅']*$srcWH['高さ']; }その他{
$srcW['幅'] = $srcWH['幅']
$srcH['高さ'] = $srcWH['高さ']
}

//比率に従ってスケールします
$im->thumbnailImage( $srcW['width'], $srcH['height'], true );
//サムネイルのサイズに応じて色付きの画像を作成します
$canvas = 新しい Imagick(); $canvas->newImage( $srcW['width'], $srcH['height'], 'black', 'jpg' );
//透かしを追加します
$im->compositeImage($logo,Imagick::COMPOSITE_OVER,$srcW['width']-280,$srcH['height']-77); $canvas->setcompressionquality(91); //写真を結合します
$canvas->compositeImage( $im, imagick::COMPOSITE_OVER, 0, 0);
//画像を出力します
header( "Content-Type: image/jpg" ); エコー $キャンバス

//画像を生成します
$canvas->writeImage( "test_img/old_large_img_2_96.jpg" ); ?>






http://www.bkjia.com/PHPjc/945708.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/945708.html

技術記事

Imagick は、さまざまな画像効果の例を実現するために PHP で使用される強力な画像処理ライブラリです。 翻訳ですが、実は imagick の主な機能の簡単な紹介というか…


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