2 回答

TA貢獻(xiàn)1784條經(jīng)驗 獲得超7個贊
在您花費(fèi)大量時間之前,您需要用于創(chuàng)建秘密圖像的原始維度來檢索它。因此,如果圖像被裁剪、調(diào)整大小或格式更改,您可能無法檢索到消息。
供您參考,這是 Imagick 示例的好站點:https ://phpimagick.com/Imagick/queryFormats雖然他們沒有提到 steganoImage()
在網(wǎng)上我發(fā)現(xiàn)下面的代碼(Codesearch)適用于 IMagick:
#!/usr/bin/perl
use Image::Magick;
#
# Hide an image within an image
#
$watermark=Image::Magick->new;
$watermark->ReadImage('smile.gif');
($width, $height)=$watermark->Get('width','height');
#
# Hide image in image.
#
$image=Image::Magick->new;
$image->ReadImage('model.gif');
$image->SteganoImage(image=>$watermark,offset=>91);
$image->Write('model.png');
$image->Write('win:');
#
# Extract image from image.
#
$size="$width" . "x" . "$height" . "+91";
$stegano=Image::Magick->new(size=>$size);
$stegano->ReadImage('stegano:model.png');
$stegano->Write('stegano.gif');
$stegano->Write('win:');

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊
Bonzo提供的答案是正確的。PHP 的 Imagick 中的示例看起來非常相似。
$image = new Imagick('rose:');
$watermark = new Imagick('label:Hello World!');
// The decoding process must "know" about the watermarks size, and starting
// pixel offset.
define('STEGANO_OFFSET', 64); // Secret offset
define('STEGANO_WIDTH', $watermark->getImageWidth());
define('STEGANO_HEIGHT', $watermark->getImageHeight());
$stegano = $image->steganoImage($watermark, STEGANO_OFFSET);
$stegano->writeImage('output.png');
要解碼原始水印,請在讀取文件之前定義隱藏圖像的寬度、高度和偏移量。
$decoded = new Imagick();
$decoded->setSizeOffset(STEGANO_WIDTH, STEGANO_HEIGHT, STEGANO_OFFSET);
$decoded->readImage('STEGANO:output.png');
$decoded->writeImage('decoded.png');
- 2 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報