从php中的数值数组创建图像

时间:2014-04-22 04:25:45

标签: php arrays image-processing blob

在我的项目中处理webservices。我不确定bankend逻辑,比如他们用来在数据库中存储图像的方法。

这是我从服务器获取的个人资料图片的响应

Array
(
 [0] => -119
 [1] => 80
 [2] => 78
 [3] => 71
 [4] => 13
 [5] => 10
 [6] => 26
 .
 .
 .
 [3778] => 123
 [3779] => 60
 [3780] => -82
 [3781] => -57
 [3782] =
)

如何将此数值数组转换为PNG图像?

我创建了一个新的图像文件,并使用

将所有内容放入该文件中
file_put_contents('downloads/myImage.png', $profileImage);

$ profileImage变量包含上面的数组。

此代码使用一些数据转储创建一个新图像。我知道这样做我错过了一些东西。请帮我解决一下这个。

我使用相同的代码在同一个项目中从服务器创建PDF文件。这工作正常。这就是为什么我尝试使用相同的代码来获取我的图像。但它没有使用图像

1 个答案:

答案 0 :(得分:0)

您的问题有点不清楚 - 我无法判断您是要将PNG文件保存在某处还是将其作为对HTTP请求的响应提供。此外,您似乎暗示$profileImage是一个数组变量,但是将其作为file_put_contents()的参数提供,它需要一个字符串。

但不管怎样,你提供的二进制数据看起来都不错。

如果$profileImage是有符号字节值的数组,则可以使用以下命令将其转换为二进制数据字符串“

$rawPNG = implode(array_map('chr',$profileImage));

如果需要,可以使用file_put_contents()将此数据写入文件。 (该函数是二进制安全的,所以不应该有任何问题。)

或者,如果要将PNG图像返回到Web客户端,只需使用适当的Content-Type标头回显它:

header('Content-Type: image/png');
die ($rawPNG);