如何用php将一张jpg/png转成.bmp格式单色位图

发布于 2022-09-11 15:42:29 字数 605 浏览 22 评论 0

我需要将一张彩色jpg/png图转换成单色位图(不是GD库中的wbmp,而是bmp),类似windows下画图工具这样:

clipboard.png

转换前:

clipboard.png

转换后:

clipboard.png

现在需要用php代码来实现,大家有什么思路么?或者现成的轮子?求指点!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

守不住的情 2022-09-18 15:42:29

png 转 bmp (PHP 7 >= 7.2.0)

$png = EASYSWOOLE_ROOT . '/Uploads/Qrcode/qrcode.png'; 
$bmp = EASYSWOOLE_ROOT . '/Uploads/Qrcode/qrcode.bmp';
imagebmp($pngObj, $bmp);

imagebmp — Output a BMP image to browser or file

官方文档

imagebmp-一位网友写的

倥絔 2022-09-18 15:42:29

我原本的思路是,将jpg/png图片转化成.bmp单色位图,也就是只有黑白色,然后逐个像素读取,取字模最终转成16进制字符串,最终结果类似是下面这样:
E00000007F0000F8000000FF0000FE000007F700007F80001FE700001FE007FF87000007F81FFC07000
当然根据图片大小不同,长度是不一样的,结果后半部分编码完成后,卡在了jpg/png转成.bmp这一步,经过不停的尝试,发现.wbmp格式的图片也是我想要的样子,GD库也有转换和读取.wbmp格式的函数,所以问题解决了;但是最后还是没有找到转成.bmp格式的办法,.wbmp并不等于.bmp
整个问题我记录了在https://www.jianshu.com/p/779...;有兴趣的可以看下,如有错误之处还请不吝赐教!

春风十里 2022-09-18 15:42:29

太晚了,手机上不好找资料。

如果有 composer 可以试试这个专门处理图片的包。

不行明天再填坑。

绅刃 2022-09-18 15:42:29

太晚了用手机简单答下,如果哪里有问题明天再补充~

  1. PHP上的图像处理,一般第一个想到的就是GD库吧。
  2. 不确定题目中出现的单色BMP文件是否就是WBMP,如果是的话,优先考虑GD库的jpeg2wbmppng2wbmp两个函数(或者可以先试试,看输出的东西对不对再说)。
  3. 如果不是的话,考虑传统方案,先用imagecreatefromjpeg创建资源,再用imagefilter做去色,最后imagebmp输出。PNG也是一样流程(换下函数),手机懒得打了。
  4. 注意下GD库介绍中的版本要求,BMP这块还挺高的,老版本GD的API应该在菜鸟教程上有,手机懒得搜了,就这样吧。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文