我有我的攝影博客網站中的一些圖片添加水印的腳本。帶水印的文件被提供給瀏覽器並保持原始狀態不變。這部分工作正常。如何使用PEL將EXIF信息從一個文件複製到另一個文件?
最近我發現使用簡單的GD作爲水印是從原始文件EXIF數據剝離重要信息。我發現該解決方案使用的是PEL,所以我需要一些幫助來使用它。
我能弄清楚如何安裝PEL,但無法將其從$original_image
複製到$new_image
的EXIF數據。
$jpeg = new PelJpeg($original_image);
$exif = $jpeg->getExif();
$tiff = $exif->getTiff();
$ifd0 = $tiff->getIfd();
$exif = $ifd0->getSubIfd(PelIfd::EXIF);
$ifd1 = $ifd0->getNextIfd();
/*
creates copy of $original_image to $new_image, adds watermark to $new_image
*/
$jpeg = new PelJpeg($new_image);
$jpeg->setExif($exif);
header("Content-Type: image/jpeg");
ImageJPEG($new_image);
這也產生這樣的錯誤:
Catchable fatal error: Argument 1 passed to lsolesen\pel\PelJpeg::setExif() must be an instance of lsolesen\pel\PelExif, instance of lsolesen\pel\PelIfd given, called in /var/www/html/clerigo/exif.php on line 71 and defined in /var/www/html/clerigo/pel/src/PelJpeg.php on line 304.
[編輯] 好吧,設法使這項工作是這樣的:
$jpeg = new PelJpeg($original);
$exif = $jpeg->getExif();
/*
creates copy of $original_image to $new_image, adds watermark to $new_image
*/
$jpeg = new PelJpeg($new_image);
$jpeg->setExif($exif);
ImageJPEG($new_image, "new_image.jpg");
$jpeg->saveFile("/var/www/html/clerigo/new_image.jpg");
的東西是,這是將圖像保存到文件中,目的不是保存任何圖像,而是僅將其提供給t他要求瀏覽器,像這樣:
$jpeg = new PelJpeg($new_image);
$jpeg->setExif($exif);
$jpeg->saveFile($new_image);
header("Content-Type: image/jpeg");
ImageJPEG($new_image);
imagedestroy($new_image);
但是,這將導致一個錯誤: Warning: file_put_contents() expects parameter 1 to be a valid path, resource given in /var/www/html/clerigo/pel/src/PelJpeg.php on line 600
任何想法如何解決這個問題?
你好,謝謝你的幫助。但之前有一個錯誤:可捕獲的致命錯誤:傳遞給lsolesen \ pel \ PelJpeg :: setExif()的參數1必須是lsolesen \ pel \ PelExif的實例,lsolesen \ pel \ PelIfd的實例,在/ var /第71行的www/html/clerigo/exif.php,以及304行的/var/www/html/clerigo/pel/src/PelJpeg.php中定義的。你能幫我弄清楚這一點嗎? – jaclerigo