[英]ImageMagick tells me image is corrupted in production - but works locally
尝试将文本添加到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" ..
(链接到底部的完整错误消息)。
但是,相同的代码可以在我的本地Web服务器上完美运行,但不能在生产环境中运行。 我在相同的位置,相同的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
我解决了。 好像是PNG是问题所在。 切换为使用JPEG(略微压缩文件大小),现在可以使用了。
不知道为什么会起作用,但是会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.