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库的支持。
演示:
<?php
$im = imagecreatefrompng(“test.png”);
imagebmp($im);
imagedestroy($im);
?>
函数:
<?php
/**
* 创建bmp格式图片
*
* @author: legend
* @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']) . “