如何在php中从十六进制代码中绘制图像


How to draw, in php, an image from the Hexadecimal code

我有一个十六进制代码,它是从图像中生成的,我想用这个十六进制代码绘制这个图像。代码来自一个类似下面例子的Web服务,问题是

1-如何从十六进制代码中绘制图像?我试过了,但不起作用:

    $hexpic="";
    $data = pack("H" . strlen($hexpic), $hexpic);
    file_put_contents("sample.png", $data);

*我尝试了另一个使用"imagecreatefromstring($data);"的例子,但它也不起作用。

十六进制代码示例:0000000 5089474e0a0ad0a100000d0048495244000002000000c0000000c000608000056005c75000004000e700004198455374666f7777426100000656441626f20656d49676152561650001007964c9713c650000220346974584d5800001203a4c6f632e6d6461626f2e656d780070000014000000003f3c70786361656b2074562000016069673d6eef22bfb20226469223d355700000304d704d654369687a865727a53544e00002207a63636b64393f22203e783c706d0000 240656d617478206c6d736e783a223d64610000260626f3a65736e6d3a74652f6120223a7800003006d7874703d6b41226f6465625820504d00003204320726f20652e352d3330633131362000003402e36343153136202c30323231302f00003602f323630312d343635323a203720200000400202220203e723c6664523a46440004042040782006c6d736e 723a664223d7468707400004402f3a772f777772e2e33726f2f67393100004603939302f323232722d666473 2d6e79000050061742d78736e2223203 e723c6664443a0000052073657263706969746e6f72206664613a00005406f627475223d20226d786e6c3a736d7800005603d70682274743a702f2f736e612e6f6400006562632e6d6f782f7061312f302e222f000062078206c6d736e783a706d4d223d7468000064070742f3a6e2f2e736461626f2e656f6300006602f6d61782f702e312f306d6d222f78200007006c6d736e733a52746665223d7468707400007202f3a3a3a3a3a6e2f2e736461626f2e656f632f6d000074061782f702e312f30547370792f65655200007606f73727565636552236620226d783a7000001000724361656f7454726f6f3d6c41226f640001020656250206f686f746873706f43203653000104028206957646e776f297320226d784d7000010603a4d6e4974736e6165634449223d6d7800011002e7069693a43041303446453353444000112036453131324544413246393931334335000114034344539431202220d784d703a4d6f44000116075663656d746e4449223d6d782e70696400012003a 6430413034464534353444364531310001220324544413246393931334335343443539000124043413e223c206d784d703a4d654469720001260657646f72206d747365523a666e69000130074736e6165634449223d6d782e70696900013203a6430413034464531353444364531310001340324544413393931334343445390000136043412022747365523a66f647563656d0001400746e4449223d6d782e 7069643a430410001420303446453343436453131324544410001440339393133433444353943412f220001460203e2f3c64723a6654463736972747000015006f693e6e3c20722f6664523a4644203e0015202f3c3a786d786d7074653e613c20783f000154061706b6374655620646e223d22723e3f00015605c55296e000c00044495441da78646200016003e2892f081811b81998898800191f83b0001620c40f80ff2f8900b03e00e62fe2080c110001640301b0d426650a81148083cbc04c01a10001660f8a488182c1f8247fe93cd8f5b564b180001700 e185909999c438f11989069b000a20001720c34ca07f70739fb92a011ff707e6a80e001740f73ba903403f11fc3d543f271dc34c00017600201243660892d34617b07f88f102206a0002000c5fefff87fffd0e40560ef52c1a100c80002020660da0417e932223f8a400405e90648e00204007220d9a0b00f5e18d482c50925c57c0002060301224f01003006064551e3019d6104000210000000004549444e42ae82600002114

有人能帮我吗?

将HEX字符串转换为二进制:

$binary = pack("H*", $hex);

pack("H*", ...)相当于hex2bin,从PHP 5.4开始就可用。将其写入磁盘:

file_put_contents("file.png", $binary);