php读取png像素,PHP脚本渲染单个透明像素(PNG或GIF)

在PHP 5.4及更高版本中,可以使用hex2bin ,这比base64_decode快两倍(用下面的空白GIF文件testing)。 输出图像的代码是:

透明1×1 PNG:

header('Content-Type: image/png'); die(hex2bin('89504e470d0a1a0a0000000d494844520000000100000001010300000025db56ca00000003504c5445000000a77a3dda0000000174524e530040e6d8660000000a4944415408d76360000000020001e221bc330000000049454e44ae426082'));

透明1×1 GIF:

header('Content-Type: image/gif'); die(hex2bin('47494638396101000100900000ff000000000021f90405100000002c00000000010001000002020401003b'));

您可以轻松地将base64编码的数据转换为hex:

echo bin2hex(base64_decode($data));

或者一个文件:

echo bin2hex(base64_decode(file_get_contents($filename)));

然而,根据我的基准,使用@Lukas Liesisbuild议的原生PHP转义方法是最快的,比base64_decode快大约12.5倍。 而且它几乎适用于任何版本的PHP。 以下是代码片段:

透明1×1 PNG:

header('Content-Type: image/png'); die("\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x01\x00\x00\x00\x01\x01\x03\x00\x00\x00\x25\xdb\x56\xca\x00\x00\x00\x03\x50\x4c\x54\x45\x00\x00\x00\xa7\x7a\x3d\xda\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\x00\x00\x0a\x49\x44\x41\x54\x08\xd7\x63\x60\x00\x00\x00\x02\x00\x01\xe2\x21\xbc\x33\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82");

透明1×1 GIF:

header('Content-Type: image/gif'); die("\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x90\x00\x00\xff\x00\x00\x00\x00\x00\x21\xf9\x04\x05\x10\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x04\x01\x00\x3b");

使用正则expression式创build这样的string很容易(因为它只做了一次,它不需要快速工作):

echo preg_replace('/../','\\x\0',bin2hex($data));

或从一个文件:

echo preg_replace('/../','\\x\0',bin2hex(file_get_contents($filename)));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值