繁体   English   中英

ImageMagick告诉我图像在生产中已损坏-但可以在本地使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM