如何在PHP 5.6中将带有无符号字节值的数组写入二进制文件

时间:2017-05-17 19:57:26

标签: php arrays file byte png

如何用无符号字节(0-255)将此数组写入二进制文件?

数组看起来像这样:

请注意,我没有添加任何索引,因为当您使用[]时,PHP会自动将值添加到数组变量中的下一个可用索引。所以第一个my_PNG [] = 137;与my_PNG [0] = 137;相同。下次使用[]时,将返回下一个索引1,依此类推等等

my_PNG = array();
my_PNG[]=137;
my_PNG[]=80;
my_PNG[]=78;
my_PNG[]=71;
my_PNG[]=13;
my_PNG[]=10;
my_PNG[]=26;
my_PNG[]=10;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=13;
my_PNG[]=73;
my_PNG[]=72;
my_PNG[]=68;
my_PNG[]=82;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=1;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=1;
my_PNG[]=8;
my_PNG[]=6;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=31;
my_PNG[]=21;
my_PNG[]=196;
my_PNG[]=137;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=13;
my_PNG[]=73;
my_PNG[]=68;
my_PNG[]=65;
my_PNG[]=84;
my_PNG[]=120;
my_PNG[]=156;
my_PNG[]=99;
my_PNG[]=96;
my_PNG[]=96;
my_PNG[]=96;
my_PNG[]=248;
my_PNG[]=15;
my_PNG[]=0;
my_PNG[]=1;
my_PNG[]=4;
my_PNG[]=1;
my_PNG[]=0;
my_PNG[]=95;
my_PNG[]=229;
my_PNG[]=195;
my_PNG[]=75;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=0;
my_PNG[]=73;
my_PNG[]=69;
my_PNG[]=78;
my_PNG[]=68;
my_PNG[]=174;
my_PNG[]=66;
my_PNG[]=96;
my_PNG[]=130;

这是PNG文件中的每个字节,其中只有一个黑色像素。 我想写或以某种方式将此数组保存到文件中,以便它可以在服务器上用作PNG图像。

我测试过:

file_put_contents('img.png', pack("C*",$my_PNG));

但它只保存一个字节到文件。我过去两天也测试过其他一些东西。所以我终于想得到一些帮助。

1 个答案:

答案 0 :(得分:3)

假设输入数组是一个字节数组,您只需要使用它 把它写成二进制文件。

"[\\p{C}&&\\S]"