BMP字节数组到BMP图像php
Posted
技术标签:
【中文标题】BMP字节数组到BMP图像php【英文标题】:BMP byte array to BMP image php 【发布时间】:2013-11-12 17:04:13 【问题描述】:只是想知道是否有人知道如何将 bmp 字节数组转换为实际图像?
图像提取:
424d 4284 0300 0000 0000 4200 0000 2800
0000 4001 0000 f000 0000 0100 1800 0300
这不适用于 bmp(其中 data 是表示图像的输入字符串)
$im = imagecreatefromstring($data);
if ($im !== false)
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
else
echo 'An error occurred.';
谢谢!
【问题讨论】:
去除空格并使用hex2bin
(或用户空间实现[pack
])。
你需要将字节数组转换为二进制字符串,你是怎么做的?
【参考方案1】:
似乎 imagecreatefromstring() 或 php 的 GD 不支持 BMP [1]
好像支持WBMP,不是BMP。 [2]
此外,imagecreatefromstring() 期望接收整个文件,而不仅仅是您可能拥有的任何选定像素的“提取”。如果它会接受原始像素数据(忘记颜色格式、位数等问题),您仍然需要至少为 imagecreatefromstring() 指定每行像素数,以便 GD 构成您的任何“原始数据” .
由于 BMP 的性质,其中数据是未压缩的像素数据,如果你真的需要,我想你可以 imagecreate() 一个空图像并在 for (y) for (x) 中使用 imagesetpixel() ... 循环从原始 BMP 文件的提取中设置像素数据。不知道你想做什么,我仍然敢打赌会有更简单的方法来做到这一点。
[1] http://php.net/manual/en/function.imagecreatefromstring.php / "imagecreatefromstring() 返回一个图像标识符,表示从给定图像获得的图像。如果您的 PHP 版本支持这些类型,则将自动检测这些类型:JPEG、PNG、GIF、WBMP 和GD2。”
[2]http://en.wikipedia.org/wiki/Wireless_Application_Protocol_Bitmap_Format
【讨论】:
以上是关于BMP字节数组到BMP图像php的主要内容,如果未能解决你的问题,请参考以下文章