【问题标题】:How to achieve a blur effect in PHP?如何在 PHP 中实现模糊效果?
【发布时间】:2013-01-20 19:18:17
【问题描述】:

我一直在寻找将高斯模糊应用于图像的 PHP 代码。

我的做法是这样的:

<?php
$image = imagecreatefromjpeg('new.jpg'); 
imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
imagejpeg($image, 'blur.jpeg');
imagedestroy($image);
?>

但是效果很弱,如果我重复模糊效果,处理时间很长,最终效果仍然不是那么好。

我也用过 Timthumb ,一直很喜欢它的简洁,但它默认裁剪图像,模糊效果很弱。

【问题讨论】:

  • 命令行或 PHP 模块 ImageMagick 可以做到这一点——任何体面的算法都应该能够获取模糊值。你有没有搜索过这个,如果有,结果是什么?
  • @ErikNedwidek ,感觉有点复杂,因为我想将模糊值连接到滑块,以便用户可以轻松更改模糊效果。它也需要相同的策略..重复代码以获得更强的效果
  • @halfer 我认为 ImageMagick 并不存在于所有服务器上,因此这可能是痛苦的根源

标签: php gd


【解决方案1】:

你可以使用 ImageMagic

原图

通过exec运行

convert a.png -blur 0x3 a_blur.png

或运行

convert a.png -blur 0x8 a_blur.png

【讨论】:

  • 哇!效果看起来很棒!经过一番搜索,我发现它也作为 Wordpress 的插件存在!我想我会仔细看看..谢谢你
【解决方案2】:

没有 ImageMagic 库也可以;

header('Content-Type: image/png');

$blurs = 10;
$image = imagecreatefrompng('blur.png');
for ($i = 0; $i < $blurs; $i++) {
    imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
}
imagepng($image, 'blur10.png');
imagedestroy($image);

应用 10 次模糊后;

【讨论】:

  • 谢谢你,但是这种方法需要更长的时间才能完成,并且将模糊值增加到更高的程度会使其失真,不像巴巴的第三个例子那样模糊。
  • @kerem:我使用了你的代码,它工作得很好..但我无法将它保存在图像文件夹中。你能提供代码来保存生成的模糊代码吗?
  • 得到了我的查询的解决方案。我使用了 imagepng("image name","target");保存图像。
【解决方案3】:

图像优化是一个非常繁重的过程,所以如果我在 PHP 中有这类任务,那么我会使用这个名为 PhpThumb 的 PHP 图像库,它可以创建模糊图像而无需任何代码,您只需通过 url 调用它的脚本并提供根据其文档的参数检查它是demo

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多