【问题标题】:imagecreatefrompng not always working on the same imageimagecreatefrompng 并不总是在同一个图像上工作
【发布时间】:2014-08-24 10:26:47
【问题描述】:

这有点奇怪。用户可以将图像上传到服务器,插入一些文本,然后从服务器端我用用户的文本和上传的图像创建一个新图像。

根据上传文件的文件类型,我使用imagecreatefrompngjpg 创建新图像。

如果用户不喜欢创建的图像,用户可以编辑文本或上传另一个图像并再次点击提交。

这一切都可以正常工作,除了一次出现。当用户上传png 文件时,如果用户决定更改某些文本并拥有相同的png 文件,则会创建新图像,我会收到以下警告:

Warning: imagecreatefrompng(): '..path.../temp/1404381132_my_png.png' is not a valid PNG file in ...path\save_image.php

这真的有点奇怪,如果同一个图像第一次工作,为什么第二次就不能工作?

我在jpgs 上测试过同样的东西,没有任何问题。

只是为了让您了解一些测试用例:

测试用例 1

用户文本 1:abc 用户文本 2:abc 图片:img.jpg

图像已创建,未发生错误

用户决定更改一些文本但具有相同的图像:

用户文本 1:abcdef 用户文字2:abcdef

图像已创建,未发生错误

用户决定更换图片

图片:img_2.jpgimg_2.png

图像已创建,未发生错误

测试用例 2

用户文本 1:abc 用户文本 2:abc 图片:img.png

图像已创建,未发生错误

用户决定更改一些文本但具有相同的图像:

用户文本 1:abcdef 用户文字2:abcdef

Warning image is not a valid PNG 错误

测试用例 3

用户文本 1:abc 用户文本 2:abc 图片:img.png

图像已创建,未发生错误

用户决定更改图像:

图片:img_2.jpgimg_2.png

图像已创建,未发生错误

我猜这个有点太具体了,不知道有没有人能解决这个问题。

【问题讨论】:

    标签: php imagecreatefrompng


    【解决方案1】:

    这可能是因为透明度和您使用 PNG 的方式。在处理 PNG 的问题时,我遇到过几次这样的情况。我一直解决它的方法是通过上传创建另一个PNG并处理该文件,而不是上传的文件:

    $uploaded = imagecreatefrompng('uploaded.png');
    
    // Create a template canvas
    $template = imagecreatetruecolor(imagesx($uploaded), imagesy($uploaded));
    
    // Copy the uploaded image onto the canvas, keeping same height and width
    imagecopyresampled($template, $uploaded, 0, 0, 0, 0, imagesx($uploaded), imagesy($uploaded), imagesx($uploaded), imagesy($uploaded));
    
    // Save it and work on this one
    imagepng($template, 'workingfile.png');
    
    imagedestroy($template);
    

    【讨论】:

    • 所以我从上传的图片创建了一张图片,保存并使用它...我会尝试一下。
    • 没错。无论如何都要试一试,并检查您是否启用了 GD PNG 支持。
    • 不幸的是仍然遇到同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多