php – imagestring创建模糊文本?

我正在使用imagestring在我的图像上绘制小尺寸的文本.我用它来绘制文本($radUrl)并将图像($img)保存到$radPath

imagestring($img, 3, 8, 8, $radUrl, imagecolorallocate($img, 255, 0, 0));
imagejpeg($img, $radPath, 100);
//($radUrl is a string, $radPath is the path to save the image)

它创建的文本模糊不清.阅读太模糊了.图像中已经存在一些甚至更小的预先存在的文本,其清晰且易于阅读.

为什么文本如此模糊,如何解决这个问题?

编辑:
使用PNG图像修复了此问题.但是,为了节省带宽成本/处理能力,我必须坚持使用imagejpeg.我知道JPEG压缩会降低所有内容的质量,尤其是线条/文本,但图像中的所有其他文本都很好.

在下面的图像中,顶部的模糊红色文本是使用imagestring创建的文本,并且清晰的白色城市名称已经存储在我服务器硬盘上的原始图像上.

解决方法:

您在绿色背景上画红色文本.这是一个可怕的想法,除非你真的想让它变得难以辨认about 10% of the male population.请停止你正在做的事情,并在继续之前阅读web accessibility.

您目前所经历的模糊是JPEG压缩的直接结果.原因如下:

人眼对亮度的变化比对颜色的变化更敏感.这是因为人眼比锥细胞含有更多的杆状细胞. JPEG压缩使用chroma subsampling来利用这一事实.通常,与亮度(亮度)相比,色度(颜色)信息被编码为水平的一半和垂直分辨率的一半.

您的红色文本与您放置的绿色背景的亮度几乎完全相同,因此您必须完全依赖低分辨率色度信息才能读取它.

你需要做的是选择更好的颜色.或者更好的是,在图像上绘制一个黑色矩形,并将文本放在其上(使用浅色,如白色或黄色,而不是红色).

但在做任何事情之前,请先阅读网页辅助功能.

上一篇:使用php和GD打印质量图像


下一篇:php imagettftext和特定的表情符号