GD库里没有生成bmp图片的函数,所以自己写了一个,这个函数尚有一个压缩算法没有写,不过已经够用了。需要的同学可以看看。int imagebmp ( resource image [, string ......
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))) { $bit = 8; } $compression = 0; // 每行字节数必须为4的倍数,补齐。 $extra = ''; $padding = 4 - ceil($width / (8 / $bit)) % 4;
1/3 1 2 3 下一页 尾页 |