如何將ImageMagick(未保存)處理的圖像傳遞給Zend_Pdf_Image? 我想轉移$ image = new Imagick($ imageFile);直接到$ pdfImage = Zend_Pdf_Image :: ...,而不保存。那可能嗎?使用ImageMagick和zend_pdf
感謝您的任何建議, 克林斯曼
如何將ImageMagick(未保存)處理的圖像傳遞給Zend_Pdf_Image? 我想轉移$ image = new Imagick($ imageFile);直接到$ pdfImage = Zend_Pdf_Image :: ...,而不保存。那可能嗎?使用ImageMagick和zend_pdf
感謝您的任何建議, 克林斯曼
我正要簡單地說「不」,但我想我會仔細檢查代碼,並考慮是否有任何其他的可能性。
imageWithPath()
方法利用其他類中的一些輔助方法來解碼參數爲$filePath
的圖像。這些輔助方法的第一件事是使用fopen()
打開$filePath
。
那麼那的含義是,您可以將任何類型的資源傳遞給您的PHP安裝所支持的imageWithPath()
方法。
一般來說,這意味着文件和URL,但自PHP 5.2以來它還包含data://
包裝。我自己也沒有用過(我一直在寫臨時文件,然後將它們傳遞給imageWithPath()
多年),但根據手冊頁,它可能只是讓您傳遞修改的數據,而不必將其保存到文件中第一。
更多信息:http://php.net/manual/en/wrappers.data.php
請讓我們都知道,如果你使用這種方法做某件事情。 :-)
我只是將我的3美分添加到詹姆斯的答案上面。他完全正確 - 允許使用data:wrapper。
實施例方法示出了如何使用ImageMagick SVG轉換爲Zend_Pdf_Image:
class My_Pdf extens Zend_Pdf {
function imageFromSvg($path, $w, $h) {
if (!class_exists('Imagick') || !file_exists($path)) return false;
$svg = file_get_contents($path);
$im = new Imagick();
$im->readImageBlob($svg);
$im->setImageFormat('png8');
$im->adaptiveResizeImage($w,$h);
return new Zend_Pdf_Resource_Image_Png('data:image/png;base64,'.base64_encode ($im));
}
}
注意Zend_Pdf_Resource_Image_Png不使用其的drawImage支持與位深度更然後8. 返回對象可以Zend_Pdf容易地包埋的PNG方法。例如:
$pdf = new My_Pdf();
$page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
$page->drawImage($pdf->imageFromSvg($svg,400,400),400,100,100,100);
我使用SVG重新調整爲400×400,因爲我得到更好的打印質量呢。你可以根據你的需要進行試驗。 祝你好運!
詹姆斯,感謝您的這種考慮。我通過保存圖像並在Zend_Pdf中重新加載來解決它。親切的問候,Juergen。 – Juergen