我有一个图像文件,带有128字节的标题,后跟原始RGBA数据,宽度和高度存储在偏移量72和74作为短整数(大端)。我已成功读取标题,但是,我需要一种方法将原始RGBA保存为PNG格式和/或GIF。我怎么能用PHP做到这一点?
欢呼声
答案 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)
我会看gd或imagemagick其中一个或两个都可以做到这一点