首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php中的imagefilter()使图像锐化

用php中的imagefilter()使图像锐化
EN

Stack Overflow用户
提问于 2012-10-25 23:26:39
回答 3查看 1.9K关注 0票数 0

是否有可能使用imagefilter()函数使图像更加清晰?我使用的是imagettftext(),它增加了字体的反别名,字体看起来有点不聚焦。我喜欢使我的最后图像变得更锐化,这样我就可以减少图像中字符周围的模糊。

不同测试图像

  • 字体使用
    • Roboto-Thin.ttf
    • Roboto-Black.ttf

光字体图像

我喜欢我的字体看起来像它旁边的那些线条。

黑色字体图像

图像与-$font_color (一些网站资源建议使字体颜色值为负值,这基本上关闭了反混叠),但在这种情况下,字体看起来很难看。(左到右100是与关闭反混叠)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 23:39:21

GD溶液

代码语言:javascript
复制
$old = "old.png";
$new = "new.png";

$im = imagecreatefrompng($imgname);
imagetruecolortopalette($im, FALSE, 256);
imagecolorset($im, imagecolorclosest($im, 159, 159, 159), 0, 0, 0);
imagecolorset($im, imagecolorclosest($im, 191, 191, 191), 0, 0, 0);

imagepng($im, $new);
imagedestroy($im);

图像魔术解

代码语言:javascript
复制
convert old.png -fuzz 0% -fill rgb(0,0,0) -opaque rgb(159,159,159) new.png
convert new.png -fuzz 0% -fill rgb(0,0,0) -opaque rgb(191,191,191) new.png

他们会输出

代码语言:javascript
复制
                  Old                           new
票数 2
EN

Stack Overflow用户

发布于 2012-10-25 23:53:32

imagefilter()中没有这样的过滤器(您尝试过IMG_FILTER_EDGEDETECT吗?)对于急剧的过渡,也许它能给你带来一些东西)。但是您可以尝试使用imageconvolution来代替:

代码语言:javascript
复制
imageconvolution($imageResource, array(
    array( -1, -1, -1 ),
    array( -1, 16, -1 ),
    array( -1, -1, -1 ),
), 8, 0);

您可能想看看PHP imageconvolution() leaves black dot in the upper left cornerimageconvolution似乎有问题

另一种可能是在应用文本之前调整图像的大小,使其(比方说)大200%。然后,使用字体再应用文本200%大。然后下采样图像。根据字体特征,这将有减少模糊的效果。使用整数幂2 (200%,400%,.)有助于减少人工制品。

票数 3
EN

Stack Overflow用户

发布于 2012-10-30 21:36:41

你用的是机器人字体的两个极端。选择光或常规版本,它将是黑暗的,而不是太黑暗。

字体渲染器的抗混叠功能不能使细线条小于一个像素厚,从而使它们变暗。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13078812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档