tags:

views:

337

answers:

3

I'm trying to create a GD image resource from a BMP image, however I'm having no luck.

The BMP image in question was created and saved with Photoshop. I've tried a couple of BMPs I found on the web too, and they gave the same results.

getimagesize() tells me the BMP image has an image type of IMAGETYPE_BMP (6) and a MIME type of 'image/x-ms-bmp'.

I've tried running the image through imagecreatefromwbmp() and imagecreatefromxbm(), but neither recognise it. I've also tried running it through imagecreatefromstring(), but that errored saying 'Data is not in a recognized format'.

I'm running XAMPP on a Windows machine with PHP 5.3.1 and GD 2.0.34 with WBMP and XBM support enabled. I've also tried this on a Linux server running PHP 5.2.6 and GD 2.0.34 with WBMP and XBM support enabled, same result.

Any ideas how I can create a GD image resource from this BMP? Is it actually possible?

+1  A: 

As far as I know, it doesn't support BMP images. The imagecreatefromwbmp() method is for dealing with wireless bitmaps (WBMP) files, not the normal BMP you have there. The imagecreatefromxbm() is for dealing with the XBM format (again, different from BMP).

I would work around this by re-opening Photoshop and re-saving as PNG or JPG. Assuming you have PHP installed/compiled with the appropriate support, you'll be able to work with one or both of those image formats fine.

Splash
It's probably faster to use `convert` from ImageMagick if you have more than a couple of images to convert.
Ignacio Vazquez-Abrams
I knew I was missing something as simple as that. I simply assumed WBMP was Windows Bitmap or something. Thank you.
Stephen Melrose
A: 

I seem to recall learning a long time ago that GD doesn't support BMP format.

Here's a link I just found.

Although there was some confusion about WBMP files, it was a long time ago.

This timeline from Delicious.com indicates it was probably 2005.

pavium
A: 

The solution you are looking for is here: http://tr.php.net/imagecreate

Scroll below to the comments to find the function named "ImageCreateFromBMP". It will help you create images from the bmp images.

Once you create the image you can use the imagejpeg() function to save the image in jpeg format.

Haluk