使用PHP检测白色图像背景?

5

使用PHP(或JS或类似技术)是否可以检测图像是否具有主要白色背景?

这是因为在我显示图像的地方有一个白色背景。一些图像具有深色或彩色背景,但有些图像是白色或主要是白色的。我有一个名为 img-shadow 的CSS类,它会向图像添加阴影。因此,只有在图像的背景是白色或主要是白色时才想要添加这个类。

这里是一个示例以帮助您理解我的意思:

enter image description here


你能不能不用直方图?你的主要目的是什么?是检测有边框的图像还是大部分是白色的图像?我认为这两张图都是大部分是白色的。 - kkuilla
我刚刚想到了“我只需要找出如何计算图像中白色像素的数量”,将它们计算成百分比,然后决定是否添加类。但是我完全忘记了相机的直方图功能可以精确地完成这项工作。所以我只需要找出如何在php/js中实现这一点。是的,这是同一张图片。正如我所说,我只是将类添加到左侧的图片上。因为你问原因:这是因为在网站上,大多数白色或完全白色背景的图像边框是看不见的。 - AlexioVay
1个回答

3
即使整个过程中有很多陷阱,我还是选择使用PHP进行操作。
首先,回答以下问题:
  • 什么样的背景色算是“大部分是白色的”?RGB(250,250,250)是否也算?
  • 带有alpha通道的PNG图片是否算(RGBA)?
  • 带有浅黄色的图片是否算?
  • 黑边框(框架)和白色中心的图片是否仍然算作白色背景?
  • 用户能上传图片吗?
你需要:
  1. 加载图片
  2. 获取直方图
  3. 根据你的规则进行分析
  4. 添加关于特定图片的元信息并生成CSS类。
此外,我建议:
  • 一些结果缓存或元数据存储,以便在每次脚本执行时不会分析图像
  • 检查图像是否具有边框(通过查看图片的边缘开发算法)
  • 将α通道视为白色颜色(可能是带有圆角的深色标志-没有白色颜色)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接