[英]Error Level Analysis with Imagick PHP - result without color
昨天我發布了關於使用 Imagmagick 在 PHP 中重新創建錯誤級別分析的問題。 在這個問題中,我找到了一個命令行交互的解決方案,並嘗試將其轉換為 Imagick 和 PHP。
提出了以下代碼:
convert barn.jpg \( +clone -quality 95 \) -compose difference -composite -auto-level -gamma 1.5 barn_ela.png
在此示例中,結果應突出顯示圖像的操縱部分。 所以我實現了以下代碼:
$ELAImageMagick = new Imagick($targetDir . $OriginalImage);
$OriginalImageMagick = new Imagick($targetDir . $OriginalImage);
$ELAImageMagick->setImageCompression(Imagick::COMPRESSION_JPEG);
$ELAImageMagick->setImageCompressionQuality($this->getRequest()->postVar('elaQuality'));
$ELAImageMagick->compositeImage($OriginalImageMagick, Imagick::COMPOSITE_DIFFERENCE, 1,1);
$ELAImageMagick->autoLevelImage();
//Set gamma with a slider in the frontend
$ELAImageMagick->gammaImage($this->getRequest()->postVar('elaSize'));
//save ELA-image into Folder
$ELAImageMagick->writeImage($targetDir . $ELAImage);
不幸的是,結果並沒有接近預期的結果:
有誰知道,我沒有完全正確地理解哪一步以及如何解決它? 我查看了文檔,並沒有真正找到任何替代方案。
提前致謝!
您需要首先證明您的代碼在 Imagemagick 中有效。 但是 -quality 僅適用於編寫 JPG output。 因此,您需要將 -quality 操作的結果實際保存為 JPG,然后在第二個命令中使用它。 在這里,我只是將 pipe 從一個轉換為另一個。 第一個轉換實際上創建了壓縮的 JPG,但只是將其傳遞給第二個命令而不寫入磁盤。
輸入:
轉換birds.jpg -quality 95 JPG:- | 轉換birds.jpg - -compose 差異 -composite -auto-level -gamma 1.5 bird_ela.png
我得到的結果是:
這是 PNG output 的 JPG 版本,因為 PNG 太大而無法發布。
但是,命令行的結果與您顯示的結果圖像不匹配。 所以這個命令也不能在 Imagick 中工作。
添加:
據我所見,除了中間的橙色鳥之外,沒有任何篡改。 大部分圖像是平坦的或具有隨機噪聲。 中間那只小鳥的質地更亮一些,所以可能是插入物。
補充2
為了增強邊緣偽影,將 -geometry +1+1 添加到我上面的命令中,就在 -compose 差異之前。
轉換birds.jpg -quality 95 JPG:- | 轉換birds.jpg - -geometry +1+1 -compose Difference -composite -auto-level -gamma 2 -define jpeg:extent=2000kb bird_ela2.png
再次發布 JPG 版本以解決文件大小問題。
這看起來與您發布的結果相似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.