Google app engine GAE images.resize与固定比例裁剪

Google app engine GAE images.resize与固定比例裁剪,google-app-engine,image,image-resizing,Google App Engine,Image,Image Resizing,我需要调整大小,从各种大小和尺寸裁剪到60x80px 纵横比。就在我放入数据存储之前。有人已经拿到了吗 这个问题解决了 目前我已经成功地将其转换为精确高度(80px) 有各种各样的宽度,当我试着把它显示在屏幕上时,看起来不太好 名单。e、 g jcarousel 我的db.put代码如下所示: if users.get_current_user(): personal.personal_id = int(self.request.get('personal_id'))

我需要调整大小,从各种大小和尺寸裁剪到60x80px 纵横比。就在我放入数据存储之前。有人已经拿到了吗 这个问题解决了

目前我已经成功地将其转换为精确高度(80px) 有各种各样的宽度,当我试着把它显示在屏幕上时,看起来不太好 名单。e、 g jcarousel

我的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

将图像的高度调整到80像素后,必须使用定义的
裁剪功能。例如:

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像素,但显然您必须添加一些检查以确认这一点,因为用户可能无法上传正确大小的图像。

将图像调整到80像素高度后,您必须使用定义的
裁剪功能。例如:

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像素宽,但显然您必须添加一些检查来确认这一点,因为用户可能无法上传大小正确的图像。

我使用了其他方法:

  • 将原始图像调整为最大高度(80)
  • 存储调整大小(但完整/未裁剪)的图像
  • 将其显示在具有以下CSS的
    内:
    宽度:60px;高度:80px;溢出:隐藏
这样,它将很好地显示在您的列表中,但您仍然可以在用户的配置文件页面上显示完整的调整大小的图片(看着您的代码,我想这就是您要做的,对吗?

我使用了其他一些东西:

  • 将原始图像调整为最大高度(80)
  • 存储调整大小(但完整/未裁剪)的图像
  • 将其显示在具有以下CSS的
    内:
    宽度:60px;高度:80px;溢出:隐藏

这样,它将很好地显示在您的列表中,但您仍然可以在用户的配置文件页面上显示完整的调整大小的图片(看着您的代码,我想这就是您要做的,对吗?

@user288541:我意识到我的代码示例中有一个错误。请参阅上面更新的示例(添加了execute_transforms调用)。left_x=(已调整大小的\u img.width-60)/2-->AttributeError:“str”对象没有属性“width”,我是否应该使用其他导入模块来修复此问题?谢谢你的好意Tom@Ivan:我意识到images.resize以字符串形式返回图像数据,而不是图像对象。我已经更新了上面的示例,以使用从初始图像数据创建的图像对象。我的结果与我的第一个脚本相同。与80px高度成比例,但不将宽度裁剪为60px….:-)谢谢你的帮助,汤姆。。。也许我们必须为谷歌图像请求功能…@Ivan:图像API肯定支持这个功能。裁剪功能应将图像裁剪到所需大小。在过去的一些代码中,我自己也使用过这个函数。你能把你在问题中试过的代码加上去吗?可能是某种类型的输入错误。@user288541:我意识到我的代码示例中有一个错误。请参阅上面更新的示例(添加了execute_transforms调用)。left_x=(已调整大小的\u img.width-60)/2-->AttributeError:“str”对象没有属性“width”,我是否应该使用其他导入模块来修复此问题?谢谢你的好意Tom@Ivan:我意识到images.resize以字符串形式返回图像数据,而不是图像对象。我已经更新了上面的示例,以使用从初始图像数据创建的图像对象。我的结果与我的第一个脚本相同。与80px高度成比例,但不将宽度裁剪为60px….:-)谢谢你的帮助,汤姆。。。也许我们必须为谷歌图像请求功能…@Ivan:图像API肯定支持这个功能。裁剪功能应将图像裁剪到所需大小。在过去的一些代码中,我自己也使用过这个函数。你能把你在问题中试过的代码加上去吗?也许有一些打字错误。是的,这正是我想要的。。。但是,由于我使用jcarousel-来显示那些图像,所以我在实现css hack时遇到了问题。。。是的,这正是我想要的。。。但是,由于我使用jcarousel-来显示那些图像,所以我在实现css hack时遇到了问题。。。埃米利安