码迷,mamicode.com
首页 > 编程语言 > 详细

图片生成居中缩略图的算法

时间:2015-06-29 18:03:19      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:缩略图

最近在研究PHP,因为项目中需要使用到缩略图,缩略图如果不裁剪的话,你会发现图像变得奇形怪状,不利于排版。因此这里就简单介绍一下生成居中缩略图的想法:

一张图片480*800

技术分享

现在我要裁剪成一张240*240的图片

技术分享

类似于上面的这张。


1.首先我们需要计算缩放的时候是宽度优先还是高度优先,如果是像上面这样的就是宽度优先。

则缩放比例就是

ratio = image_width_dst/image_width_src


2.根据比例,缩小后的高度就是

image_height_pre = image_height_src *  ratio


3.获取了缩放后高的高度,再减去需要生成的高度,就是缩小后剩余的高度

image_height_rem = image_hieght_pre - image_height_dst


4.最后计算开始裁剪的地方

start_cut = image_height_rem  *  image_width_src/image_widtg_dst / 2


就上面的公式不好理解:


总结:

宽度优先的公式

开始裁剪的坐标 = (原图高  *  (目标图宽/原图宽) -目标图高) * (原图宽/目标图宽 ) / 2


高度优先的公式

开始裁剪的坐标 = (原图宽  *  (目标图高/原图高) -目标图宽) * (原图高/目标图高 ) / 2




难点:

当获取到裁剪剩余的高度的时候,还需要还原为原来图片的比例。

除以2,是为了居中,空出2端的位置







 

本文出自 “枫林晚” 博客,请务必保留此出处http://fengwan.blog.51cto.com/508652/1668970

图片生成居中缩略图的算法

标签:缩略图

原文地址:http://fengwan.blog.51cto.com/508652/1668970

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!