GD库里没有生成bmp图片的函数,所以自己写了一个,这个函数尚有一个压缩算法没有写,不过已经够用了。需要的同学可以看看。
int imagebmp ( resource image [, string filename [, int $bit [, int compression]]] )
$im: 图像资源 $filename: 如果要另存为文件,请指定文件名,为空则直接在浏览器输出 $bit: 图像质量(1、4、8、16、24、32位) $compression: 压缩方式,0为不压缩,1使用RLE8压缩算法进行压缩
注意:这个函数仍然需要GD库的支持。
Demo:
$im = imagecreatefrompng("test.png"); imagebmp($im); imagedestroy($im); Source:
/** * 创建bmp格式图片 * * @author: legend(legendsky@hotmail.com) * @link: http://www.ugia.cn/?p=96 * @description: create Bitmap-File with GD library * @version: 0.1 * * @param resource $im 图像资源 * @param string $filename 如果要另存为文件,请指定文件名,为空则直接在浏览器输出 * @param integer $bit 图像质量(1、4、8、16、24、32位) * @param integer $compression 压缩方式,0为不压缩,1使用RLE8压缩算法进行压缩 * * @return integer */ function imagebmp(&$im, $filename = '''', $bit = 8, $compression = 0) { if (!in_array($bit, array(1, 4, 8, 16, 24, 32))) { $bit = 8; } else if ($bit == 32) // todo:32 bit { $bit = 24; } $bits = pow(2, $bit); // 调整调色板 imagetruecolortopalette($im, true, $bits); $width = imagesx($im); $height = imagesy($im); $colors_num = imagecolorstotal($im); if ($bit <= 8) { // 颜色索引 $rgb_quad = ''''; for ($i = 0; $i < $colors_num; $i ++) { $colors = imagecolorsforindex($im, $i); $rgb_quad .= chr($colors[''blue'']) . chr($colors[''green'']) . chr($colors[''red'']) . "\0"; } // 位图数据 $bmp_data = ''''; // 非压缩 if ($compression == 0 || $bit < 8) { if (!in_array($bit, array(1, 4, 8))) { &nb |