我使用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
创建的文字,并且清晰的白色城市名称已经存储在我服务器硬盘上的原始图像上。
答案 0 :(得分:1)
您正在绿色背景上绘制红色文字。这是一个可怕的想法,除非你真的想让about 10% of the male population难以辨认。请停止正在进行的操作,并在继续之前阅读web accessibility。
您目前遇到的模糊是JPEG压缩的直接结果。原因如下:
人眼对亮度变化比对颜色变化更敏感。这是因为人眼比锥细胞含有更多的杆状细胞。 JPEG压缩使用chroma subsampling来利用这一事实。通常,与亮度(亮度)相比,色度(颜色)信息以水平的一半和垂直分辨率的一半进行编码。
您的红色文字与您放置的绿色背景的亮度几乎完全相同,因此您必须完全依赖低分辨率色度信息才能阅读。
您需要做的是选择更好的颜色。或者更好的是,在图像上绘制一个黑色矩形,并将文字放在其上(使用浅色,如白色或黄色,而不是红色)。
但在做任何事情之前,请先阅读网页辅助功能。