PHP将原始RGBA保存为PNG / GIF

时间:2011-03-23 12:32:39

标签: php png gif

我有一个图像文件,带有128字节的标题,后跟原始RGBA数据,宽度和高度存储在偏移量72和74作为短整数(大端)。我已成功读取标题,但是,我需要一种方法将原始RGBA保存为PNG格式和/或GIF。我怎么能用PHP做到这一点?

欢呼声

3 个答案:

答案 0 :(得分:1)

虽然您可以自己从源流生成未压缩的PNG,但这需要花费很多精力。 (需要手工制作png32标头,并写出未压缩的deflate组块,因为PNG本身不支持未压缩的有效负载)。

使用imagemagick更容易。只需将原始RGBA流写入临时文件并使用:

file_put_contents("tmp.rgba", susbstr($data, 128));

exec("convert -size 640x300 -depth 8   tmp.rgba output.png");

答案 1 :(得分:1)

如果你安装了gd lib(用phpinfo()检查;)就像是

//create image
$img = imagecreatetruecolor($width, $height);

//fill by iterating through your raw pixel data
imagesetpixel($img, $x, $y, $color);

//output
header("Content-Type: image/png");
imagepng($img);

//cleanup
imagedestroy($img);

修改

你说这是RGBA数据。假设每个通道标准4个字节,并且原始数据是整数数组,则应该是:

$pos = ($y * $width + $x) * 4 + ($headerLengthInBytes / 4);
$red = $rawImageData[$pos];
$green = $rawImageData[$pos + 1];
$blue = $rawImageData[$pos + 2];
$alpha = $rawImageData[$pos + 3];

答案 2 :(得分:0)

我会看gdimagemagick其中一个或两个都可以做到这一点