【发布时间】:2014-08-24 15:13:58
【问题描述】:
在尝试向 PNG 图像添加文本时,ImageMagick 给了我一些奇怪的“损坏的图像”错误消息。
我创建了一个在 WordPress 中实现的函数,它接受表单输入数据,并将输入作为文本添加到 PNG 图像中,然后将其与其他几个 PNG 合并并输出为多页 PDF。
运行该函数时,ImageMagick 告诉我Fatal error: Uncaught exception "ImagickException" with message "corrupt image "/home/1/u/utoya/www//wp-content/uploads/pdf/innside.png" ..(链接到底部的完整错误消息)。
但是,相同的代码在我的本地网络服务器上运行良好,但在生产环境中却不行。我使用完全相同的文件,在相同的位置和相同的 chmod 设置。
PNG 是不是因为文件太大而无法读取,某处是否存在内存限制,或者我应该如何处理此错误消息?
我的代码如下所示:
function generate_pdf( $purchaseData )
{
$toName = $purchaseData['toName'];
$fromName = $purchaseData['fromName'];
$email = $purchaseData['recipientEmail'];
$filename = date('dmY') . '-' . md5(date('dmY')) . '.pdf';
// die( '../..' . '/uploads/pdf/innside.png' );
// Create new Imagick PDF container
$combined = new Imagick();
// Create new Imagick object of inside page
$image = new Imagick( ABSPATH . '/wp-content/uploads/pdf/innside.png' );
// Create drawing capabilities
$draw = new ImagickDraw();
// Set text color
$draw->setFillColor('black');
// Add 'To' text
$draw->setFont( ABSPATH . 'fonts/Georgia-Bold-Italic.ttf' );
$draw->setFontSize(44);
$image->annotateImage($draw, 2020, 268, 0, $toName);
// Add 'From' text
$draw->setFont(ABSPATH . 'fonts/Georgia-Italic.ttf');
$image->annotateImage($draw, 2020, 987, 0, $fromName);
// Add all pages to PDF
$combined->addImage( new Imagick( ABSPATH . '/uploads/pdf/forside.png' ) ); // Front page
$combined->addImage( $image ); // Inside page
$combined->addImage( new Imagick( ABSPATH . '/uploads/pdf/bakside.png' ) ); // Back page
// Set output format
$combined->setFormat('pdf');
// Save pages to file
$pdf = $combined->writeImages( ABSPATH . '/generated/' . $filename, TRUE );
$attachments = array( ABSPATH . '/generated/' . $filename );
wp_mail( $email, 'Innledergavekort til ' . $toName, 'Hei, her kommer ditt gavekort', NULL, $attachments );
}
(很长的)错误可以在这里找到:http://pastebin.com/db216Qvz
【问题讨论】:
-
您是否在两种环境中使用相同版本的 ImageMagick?
-
既然您找到了解决方案(即使不是很正统的解决方案),您应该考虑发布您自己问题的答案,甚至将其标记为已接受。
-
你能在某处发布一个不工作的 png 示例吗?
标签: php wordpress imagemagick pdf-generation imagick