首页 文章

在PHP中将BMP转换为JPG

提问于
浏览
0

在我正在开发的网站中,我需要能够通过imagejpeg()传递我的所有图像,所以我决定(因为我的网站只接受JPG,BMP PNG上传)以便首先将BMP和PNG转换为JPG .

现在转换BMP我用过这里的脚本:http://forums.codewalkers.com/php-coding-7/how-to-convert-bmp-to-jpg-879135.html

当我通过普通的BMP时,脚本工作正常 .

现在,我有一个PNG,我通过imagecreatefrompng()进行转换时遇到了问题,过了一段时间我意识到它有mime-type image / x-ms-bmp ....

我尝试通过BMP脚本传递图像但我收到以下错误:

警告:imagecreatefromgd()[function.imagecreatefromgd]:'C:\ Users \ Tom \ AppData \ Local \ Temp \ GD50C1.tmp'不是C:\ xampp \ htdocs \ test \ cropimage \ FCreateImageFromBMP中的有效GD文件 . php在第10行

如果有人在此之前遇到过这种情况,请提供帮助 . 如果您需要查看任何代码,请告诉我 .

先谢谢你,汤姆 .

编辑:可能有用的是,错误发生的行(从上面的链接)si这一个:

$tmp_name = tempnam("/tmp", "GD");

1 回答

  • 1

    如果一些先决条件失败,您链接的代码将退出:

    if(!($src_f = fopen($src, "rb"))) { 
    ...
    if(!($dest_f = fopen($dest, "wb"))) { 
    ...
    if($type != 0x4D42) { // signature "BM"
    

    因此,假设源文件和tmp文件是可读/写的,它看起来像你给它的文件(它作为.png发送但提供BMP mime类型)实际上也不是BMP文件,因为文件内容不要以“BM”标识符开头 . 如果您附加文件,也许有人可以确定它到底是什么 .

    我用来解决这个问题的另一个解决方案是使用ImageMagick的convert命令将大多数文件类型(无论它们是什么)转换为所需的格式:

    // convert uses the file extension to determine the output format, so
    // change .jpg to whatever you'd like
    $tmp_name = tempnam("/tmp", "convert") . '.jpg';
    exec('c:\path\to\imagemagick\convert ' . $inputFile . ' ' . $tmp_name);
    

    您可以在此处获取适用于Windows和其他平台的ImageMagick:http://www.imagemagick.org/script/binary-releases.php

相关问题