[gd]生成bmp格式的图片(imagebmp)

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 = 0; $j –) { $i = 0; while ($i < $width) { $bin = 0; $limit = $width - $i < 8 / $bit ? (8 / $bit - $width + $i) * $bit : 0; for ($k = 8 - $bit; $k >= $limit; $k -= $bit) { $index = imagecolorat($im, $i, $j); $bin |= $index = 0; $j –) { $last_index = “”; $same_num = 0; for ($i = 0; $i 255) &nb

http://www.bkjia.com/phpjc/508374.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/508374.htmltecharticlegd库里没有生成bmp图片的函数,所以自己写了一个,这个函数尚有一个压缩算法没有写,不过已经够用了。需要的同学可以看看。 int image…

Posted in 未分类