【问题标题】:ImageMagick PHP need a good quality thumbnail generationImageMagick PHP 需要高质量的缩略图生成
【发布时间】:2016-05-24 17:36:00
【问题描述】:

我正在使用 php imagemagick 来生成缩略图。

  • 如果我给出最佳拟合,并且尺寸为 50x50,它会生成 36x50 尺寸的图像(质量好)
  • 如果我将 bestfit 设为 false 且尺寸为 50x50,则会生成 50x50 尺寸的图像(质量差)

我需要一个解决方案,无论图像大小(我将上传 200X200 的最小值)我给出 它需要在 ImageMAgick 中提供具有良好质量和技术的 50x50 吗??

【问题讨论】:

  • 请展示一些代码,最好是示例
  • “质量好”是指“保持比例”吗?例如,如果您上传 300x200 的图片,您希望将其调整为 75x50,然后裁剪为 50x50(在这种情况下,通过从左侧移除 13px 和从右侧移除 12px)?
  • $originalImage = tmp 图片上传 newImage = $this->rootpath.'/'.$location_1.'/'.$thumb['name'].$name; //传递imagepath和width&height需要生成thumb $this->makeThumb($originalImage,$newImage,50,50,true) //上面最后一个参数是bestfit(true/false)
  • 函数 makeThumb($originalImage,$newImage,$width,$height,$bestfit) { $width = intval($width); $height = intval($height); $im = 新的想象(); try{ /* 读取图像文件 / $im->readImage($originalImage); / 缩略图图片(宽度100,保留尺寸)/ $im->thumbnailImage($width,$height,$bestfit); / 将缩略图写入磁盘 / $im->writeImage($newImage); / 获取上传图片的大小/ $size = getimagesize($newImage); / 获取当前高宽差*/ } catch (ImagickException $e) { return false; } 返回真; $im->destroy(); }
  • * 如果我上传 300x200 .. 它需要找到该图像的中心点并需要从那里计算 50x50 .. 需要删除左右一些像素

标签: php imagemagick


【解决方案1】:

使用$im->cropThumbnailImage() 而不是$im->thumbnailImage()

【讨论】:

    【解决方案2】:

    看看PHP Thumb(MIT 许可证)。

    它支持自适应调整大小

    它所做的是调整图像的大小以尽可能接近所需的尺寸,然后将图像从中心裁剪到适当的尺寸。

    require_once '/path/to/ThumbLib.inc.php';  
    
    $thumb = PhpThumbFactory::create('test.jpg');  
    $thumb->adaptiveResize(50, 50)->save('/path/to/new_thumb.jpg');  
    

    PHP Thumb 是一个轻量级的图像 针对的操作库 缩略图生成。它具有 能够按宽度、高度调整大小, 和百分比,创建自定义作物, 或从中心开始的方形作物,以及 旋转图像。

    PHP Thumb Github WIKI

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2012-05-22
      • 2011-07-04
      • 2010-12-13
      • 2014-04-07
      • 2011-10-11
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多