【问题标题】:Converting BMP to JPG in PHP在 PHP 中将 BMP 转换为 JPG
【发布时间】:2011-10-16 21:37:57
【问题描述】:

在我正在开发的网站中,我需要能够通过 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 类型的 image/x-ms-bmp....

我尝试通过 BMP 脚本传递图像,但出现以下错误:

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

如果有人遇到过这个问题,请帮忙。 如果您需要查看任何代码,请告诉我。

提前致谢,汤姆。

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

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

【问题讨论】:

    标签: php image gd


    【解决方案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 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: Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-26
      • 2015-05-10
      • 2012-08-13
      • 2010-10-19
      • 2011-05-29
      • 2012-01-24
      • 2018-08-27
      • 2012-12-29
      相关资源
      最近更新 更多