具有固定比例裁剪的GAE images.resize

时间:2010-03-08 06:45:39

标签: google-app-engine image image-resizing

我需要调整尺寸并从各种尺寸裁剪到60x80px 纵横比。就在我投入数据存储之前。任何人都有 这个问题已经解决了。

目前我已经成功将其转换为精确高度(80px) 各种宽度,当我试图显示它时看起来不那么好 一个列表。例如jcaroussel。

我的db.put代码如下:

    if users.get_current_user():
        personal.personal_id = int(self.request.get('personal_id'))
        personal.name = self.request.get('name')
        personal.latitude = self.request.get('latitude')
        personal.info = self.request.get('info')
        photo = images.resize(self.request.get('img'), 0, 80)
        personal.photo = db.Blob(photo)
        personal.lc_id = int(self.request.get('lc_id'))
        personal.put()
        self.redirect('/admin/personal')

    else:
      self.response.out.write('I\'m sorry, you don\'t have permission to add this LP Personal Data.')

当我们在谷歌上传我们的头像时,我只是想做类似的结果 聊天/谷歌聊天。

有人解决了这个问题吗?

Thx

2 个答案:

答案 0 :(得分:1)

将图片大小调整为80像素高后,您必须使用定义为herecrop函数。例如:

img = images.Image(self.request.get('img'))
img.resize(0, 80)
resized_img = img.execute_transforms(output_encoding=images.JPEG)
left_x = (resized_img.width - 60) / 2
resized_img.crop(left_x, 0, left_x + 60, 80)
cropped_img = resized_image.execute_transforms(output_encoding=images.JPEG)

在我的例子中,它剪切到图像的中心。 它假设调整后的图像宽度至少为60像素,但显然您必须添加一些检查以确认这一点,因为用户可能无法上传正确尺寸的图像。

答案 1 :(得分:0)

我用了别的东西:

  • 将原始图像调整为最大高度(80)
  • 存储已调整大小(但完整/未裁剪)的图像
  • 在具有以下CSS的<div>内显示:width: 60px; height: 80px; overflow: hidden;

这样它会很好地显示在你的列表中,但是你仍然可以在用户的​​个人资料页面上显示完整的已调整大小的图片(看着你的代码,我想你正在尝试做什么,对吗?)