PHPの中で面白いGmagickの画像の操作の拡張の使用を学びます

7513 ワード

PHPの画像処理分野では、最も有名なGDライブラリがなぜ良いのかといえば、他の画像処理ツールを追加的にインストールする必要がなく、PHPソースコードとともに公開されているので、PHPをインストールするときにコンパイルパラメータを追加するだけでいいからです.
GDライブラリは、画像の簡単な描画、透かし、スケールなど、多くのことを処理するのに役立ちますが、ビジネスニーズはより多様で豊富になりがちです.例えば、今日はPSのように画像を反転させたり、ぼやけたりする機能が必要で、GDライブラリだけでは非常に面倒です.
もちろん、多くの学生がImageMagickを使ったことがあるかもしれませんが、今日紹介したのはImageMagickではなく、ブランチソフトウェアGraphicsMagickです.GraphicsMagickはImageMagickから5.5.2でforkが出てきた分岐.ImageMagickに比べて新しい特性はありませんが、安定性とパフォーマンスに集中しています.
だから、私たちの勉強のポイントは後のImageMagickに置いて、GraphicsMagickについてこの文章で簡単に理解してみましょう.
インストール
まず、GraphicsMagickをシステムにインストールし、PHPのGmagick拡張子をインストールする必要があります.具体的なインストール手順は、次のリンクを参照してください.
https://www.jianshu.com/p/7c4e02a84641
画像のロードと画像情報の表示
最初のステップは、初期化Gmagickオブジェクトとその基本情報をロードする方法を簡単に見てみましょう.
$image = new Gmagick('./img/2.jpg');

echo 'Copyright:', $image->getcopyright(), PHP_EOL;
// Copyright:Copyright (C) 2002-2020 GraphicsMagick Group.
// Additional copyrights and licenses apply to this software.
// See http://www.GraphicsMagick.org/www/Copyright.html for details.

echo 'Filename:', $image->getimagefilename(), PHP_EOL; // Filename:./img/2.jpg

echo 'Image Format:', $image->getimageformat(), PHP_EOL; // Image Format:JPEG

echo 'Image Width and Height:', $image->getimagewidth(), ' * ', $image->getimageheight(), PHP_EOL; // Image Width and Height:300 * 244

echo 'Image type:', $image->getimagetype(), PHP_EOL; // Image type:6

new Gmagick(path)を直接使用すると、Gmagickオブジェクトをインスタンス化できます.次に、現在のGraphicsMagickのバージョン情報、ピクチャパス、サイズ、フォーマットなど、一連のgetxxxx関連の方法でピクチャのいくつかの情報を得ることができます.
同様に、画像を他の操作を行うにも、このオブジェクトの下に様々な拡張ライブラリで提供されている方法を直接使用すればよい.
画像に枠を付ける
//    
$image = new Gmagick('./img/2.jpg');
$image->borderimage("green", 2, 2)->oilpaintimage(0.3);
$image->write('./img/2-border.jpg');

borderimage()法により、画像に幅2画素の緑色の枠を非常に簡単に加えることができる.oilpaintimage()は、画像に油絵効果を追加したものですが、Gmagickがインスタンス化されたオブジェクトのメソッドはチェーン呼び出し可能です.現在使用している方法でもGmagickオブジェクトを返すだけでいいです.
画像とサムネイルを切り取る
$image = new Gmagick('./img/2.jpg');
$image->resizeimage(150, 150, 10, 1);
$image->write('./img/2-resize.jpg');

$image = new Gmagick('./img/2.jpg');
$image->scaleimage(150, 150);
$image->write('./img/2-scale.jpg');

この2つの方法では、resizeimage()とscaleimage()が画像のサイズを変えることができ、resizeimage()はチャネルで操作されますが、実際の使用状況にはあまり明らかな違いはありません.
//    
$image = new Gmagick('./img/2.jpg');
$image->thumbnailimage(100, 0);
$image->write('./img/2-thumbnail.jpg');

//      
$image = new Gmagick('./img/2.jpg');
$image->cropthumbnailimage(100,90);
$image->write('./img/2-cropthumbnaili.jpg');

//        
$image = new Gmagick('./img/2.jpg');
$image->minifyimage();
$image->write('./img/2-minify.jpg');

thumbnailimage()は、直接サムネイルを生成し、ネット上に表示するのに適した小さな低コストのサムネイル画像を作成することを目標としており、幅を1つだけ記入したり、高さを1つだけ記入したりすると、画像が自動的に所定の大きさに等比例して開くことができます.cropthumbnailimage()は、まず画像を縮小し、次に指定した領域を中心から切り取って固定サイズのサムネイルを作成します.実は簡単なテスト表現から見ると、違いも大きくありません.
minifyimage()は直接等比例してピクチャを半分に縮小するので,この方法ではパラメータは必要ない.
画像の回転、オフセット
//     
$image = new Gmagick('./img/2.jpg');
$image->flipimage();
$image->write('./img/2-flip.jpg');

//     
$image = new Gmagick('./img/2.jpg');
$image->flopimage();
$image->write('./img/2-flop.jpg');

//     
$image = new Gmagick('./img/2.jpg');
$image->rotateimage('#ffffff', 60);
$image->write('./img/2-rotate.jpg');

//     
$image = new Gmagick('./img/2.jpg');
$image->rollimage(150, 150);
$image->write('./img/2-roll.jpg');

flipimage()とflopimage()は直接画像を垂直と水平に反転させ、rotateimage()は指定された角度に基づいて画像を回転させ、最初のパラメータは回転した後に回転した場所に残る背景色です.rollimage()の効果はオフセット画像で、画像の位置を元のサイズでオフセットすることです.この効果はちょっと理解しにくいかもしれませんが、自分で試してみてください.かっこいいですよ.
画像の色効果の調整
//    、   、  
$image = new Gmagick('./img/2.jpg');
$image->modulateimage(80, 80, 80);
$image->write('./img/2-modulate.jpg');

//      
$image = new Gmagick('./img/2.jpg');
$image->normalizeimage(30);
$image->write('./img/2-normalize.jpg');

modulateimage()は、画像の輝度、飽和度、および色調を直接3つのパラメータによって対応付けて調整し、これらの値は−100〜100の整数である.これは実際にはPSに関連する画像調整ツールと似ており、PSや各種の修図ソフトでは上下に引っ張るスライドレバーで調整されています.同様にnormalizeimage()はピクチャのコントラストを調整し,修図ソフトウェアのパラメータ値と同様である.
各種特効
//     
$image = new Gmagick('./img/2.jpg');
$image->blurimage(30, 10);
$image->write('./img/2-blur.jpg');

//       
$image = new Gmagick('./img/2.jpg');
$image->motionblurimage(30, 50, 10);
$image->write('./img/2-motionblur.jpg');

//       
//$image = new Gmagick('./img/2.jpg');
//$image->radialblurimage(12.5);
//$image->write('./img/2-radialblur.jpg');

ファジイ効果には3つのファジイツールが含まれており、最初のblurimage()メソッドは通常のファジイ機能であり、その2つのパラメータはファジイ半径と標準差であり、この2つのパラメータを調整することで異なるファジイ度合い効果を得ることができます.モーションブラー()モーションブラーとは、実は少し斜度のある左右ドラッグ型のブラー効果です.最後のラジアルブラー効果はテスト中にエラーが発生し続け、原因も見つからず、自分のGraphicsMagickではこの機能がサポートされていないようです.役に立つことがあるのは情況の学友を理解して伝言を残して説明することができます!
//       
$image = new Gmagick('./img/2.jpg');
$image->oilpaintimage(5);
$image->write('./img/2-oilpaint.jpg');

//     3D  
$image = new Gmagick('./img/2.jpg');
$image->raiseimage(50, 50, 150, 150, true);
$image->write('./img/2-raise.jpg');

//     
$image = new Gmagick('./img/2.jpg');
$image->charcoalimage(10, 3);
$image->write('./img/2-charcoal.jpg');

//         
$image = new Gmagick('./img/2.jpg');
$image->solarizeimage(60);
$image->write('./img/2-solarize.jpg');

//          
$image = new Gmagick('./img/2.jpg');
$image->spreadimage(10);
$image->write('./img/2-spread.jpg');

//         
$image = new Gmagick('./img/2.jpg');
$image->swirlimage(100);
$image->write('./img/2-swirl.jpg');

この効果はあまり言わないから、みんなでやってみてください.
まとめ
わかりましたね.実はGraphicsMagickはGDに比べて、これらの修図面の効果を実現するのはとても簡単です.また、これらは一般的な修図ソフトにもある機能です.つまり、PHPで似たようなオンライン修図ツールを作ることができますよ.もちろん、後で私たちが勉強するImageMagickにもこれらの機能があり、基本的には方法の名前さえ同じです.したがって,ImageMagickを学習する際には,各メソッド関数の機能を詳細に説明しない.
また、GraphicsMagickにはGmagickDrawとGmagickPixelの2つのオブジェクトがグラフィックの描画と色の定義に使用されています.この2つのオブジェクトはImageMagickでも対応して実現されています.私たちも主にそちらの学習を主としています.
テストコード:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202012/source/4.PHPの中で面白いGmagick画像の操作の拡張の使用を学ぶ(一).php
参照ドキュメント:
https://www.php.net/manual/zh/book.gmagick.php
各メディアプラットフォームで検索可能【ハードコアプロジェクトマネージャ】