img标签保持纵横比html,调整图像大小,保持纵横比,使纵向和横向图像大小完全相同?...

以下是我对为图片做填充的看法:#!/usr/bin/env python

from PIL import Image, ImageChops

F_IN = "/path/to/image_in.jpg"

F_OUT = "/path/to/image_out.jpg"

size = (80,80)

image = Image.open(F_IN)

image.thumbnail(size, Image.ANTIALIAS)

image_size = image.size

thumb = image.crop( (0, 0, size[0], size[1]) )

offset_x = max( (size[0] - image_size[0]) / 2, 0 )

offset_y = max( (size[1] - image_size[1]) / 2, 0 )

thumb = ImageChops.offset(thumb, offset_x, offset_y)

thumb.save(F_OUT)

它首先使用缩略图操作将图像降到原来的范围内并保留外观。然后它将它裁剪出来,以实际填充边界的大小(因为除非原始图像是正方形的,否则它现在会变小),然后我们找到适当的偏移量来使图像居中。图像会偏移到中心,因此最终会使用黑色填充,但不会剪切图像。

除非你能在不丢失边缘重要图像数据的情况下,对一个合适的中心裁剪做出一个非常合理的猜测,否则填充拟合方法会更好地工作。

更新

这是一个版本,可以做中心作物或垫适合。#!/usr/bin/env python

from PIL import Image, ImageChops, ImageOps

def makeThumb(f_in, f_out, size=(80,80), pad=False):

image = Image.open(f_in)

image.thumbnail(size, Image.ANTIALIAS)

image_size = image.size

if pad:

thumb = image.crop( (0, 0, size[0], size[1]) )

offset_x = max( (size[0] - image_size[0]) / 2, 0 )

offset_y = max( (size[1] - image_size[1]) / 2, 0 )

thumb = ImageChops.offset(thumb, offset_x, offset_y)

else:

thumb = ImageOps.fit(image, size, Image.ANTIALIAS, (0.5, 0.5))

thumb.save(f_out)

source = "/path/to/source/image.JPG"

makeThumb(source, "/path/to/source/image_padded.JPG", pad=True)

makeThumb(source, "/path/to/source/image_centerCropped.JPG", pad=False)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值