ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの Imagick を使用した画像ヒストグラムの実装コード

PHP_PHP チュートリアルの Imagick を使用した画像ヒストグラムの実装コード

WBOY
WBOYオリジナル
2016-07-21 15:24:37753ブラウズ

専門用語については詳しく説明しませんので、興味のある方は記事の最後にある参考リンクをご覧ください。わかりやすい説明があります:

まずサンプル画像を探してみましょう (Canon 550D で撮影) ):
PHP_PHP チュートリアルの Imagick を使用した画像ヒストグラムの実装コード
サンプル画像: Butterfly.jpg

Imagick を使用して画像ヒストグラムを実装する方法を見てみましょう:

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

$file = 'butterfly.jpg';
$size = array(
'width' => 256,
'height' => 100,
);
$image = new Imagick($file); range(0, 255), 0);
foreach ($image->getImageHistogram() as $pixel) {
$rgb = $pixel->getColor();
$histogram[$rgb['r'] ] += $pixel->getColorCount( );
$histogram[$rgb['g']] += $pixel->getColorCount();
$histogram[$rgb['b']] += $ピクセル->getColorCount();
$max = max($histogram);
$threshold = ($image->getImageWidth() * $image->getImageHeight()) / 256 * 12; ($max > $threshold) {
$max = $threshold;
$image = new Imagick()
$image->newImage($size' ], $size['height'], 'white');
foreach ($histogram as $x => $count) {
if ($count == 0) {
Continue
}
$draw-> ;setStrokeColor('black');
$ height = min($count, $max) / $max * $size['height']
$draw->line($x, $size['height']) , $x, $size['height' ] - $height);
$image->drawImage($draw);
}
$image->setImageFormat('png) ');
$image->writeImage ('histogram.png');


注: $threshold 値がコードに追加される理由は、一部のカラー レベルの値が異なる場合があるためです。非常に大きいため、処理しないと最終結果に影響を及ぼします。なぜ最初に 256 で割ってから 12 をかける必要があるのか​​については、まったく理由はありません。他の方法を使用することもできます。

最終的なヒストグラムは基本的に Photoshop と同じ効果になります。これは Photoshop のものです:


Photoshop によって生成されたヒストグラム
注: Photoshop で画像を開いた後、ウィンドウを選択し、ヒストグラムを選択します。
この記事は、実際には RGB チャネルのヒストグラムの描画方法に関するものです。原則として、RGB ヒストグラムは、赤、緑、青の 3 原色のヒストグラムの累積結果です。 、青、上記のコードは少し変更できます。
注: XARG.ORG には、HTML5 で実装された画像ヒストグラムのオープンソース プロジェクトがあります。その効果は優れており、学ぶ価値があります。
最後に、ちなみに、写真の知識に興味がある場合は、「デジタル カメラのヒストグラムを解釈する方法」を参照してください。
PHP_PHP チュートリアルの Imagick を使用した画像ヒストグラムの実装コード

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

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/324322.html技術記事専門用語について詳しく説明するつもりはありません。興味のある方は、記事の最後にあるわかりやすい説明がある参考リンクを参照してください。まず、サンプル画像を探してみましょう (Canon を使用して...)。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。