2011-07-31 284 views
0

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

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

该脚本正常工作,当我穿过它正常的BMP。现在

,我有一个PNG,我曾通过imagecreatefrompng转换问题(),并在一段时间后,我意识到它有mime类型图像/ X-MS-BMP ....

我试图通过通过BMP脚本的图像,但我得到以下错误:

Warning: imagecreatefromgd() [function.imagecreatefromgd]: 'C:\Users\Tom\AppData\Local\Temp\GD50C1.tmp' is not a valid GD file in C:\xampp\htdocs\test\cropimage\FCreateImageFromBMP.php on line 10

如果有人来过这个之前,请帮助。 如果您需要查看任何代码,请告诉我。

在此先感谢,汤姆。

编辑: 可能提有用,发生错误的(如从上面的链接)线路S1这样一条:

$tmp_name = tempnam("/tmp", "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”标识开始IER。如果你附加文件,也许有人可以确定它是什么。

我已经习惯了这种问题的另一个解决方案是使用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); 

你可以得到ImageMagick的Windows和其他平台在这里: http://www.imagemagick.org/script/binary-releases.php