您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – App Engine:通过从blobstore提供缩略图来计算要生成的缩略图的尺寸

5b51 2022/1/14 8:21:20 python 字数 3688 阅读 470 来源 www.jb51.cc/python

我目前正在使用blobstore为图像生成缩略图,但是,我喜欢将缩略图的尺寸存储在img标签中,因为这是一种很好的做法,有助于加快渲染速度并使部分加载的页面看起来更好一些.如何只计算原始图像的尺寸,如何计算blobstore生成的缩略图的尺寸?我以前的尝试并不是很准确,大部分时间都是一两个像素(可能是由于四舍五入).我知道获取缩略图而不是使用图像API检查尺

概述

我目前正在使用blobstore为图像生成缩略图,但是,我喜欢将缩略图的尺寸存储在img标签中,因为这是一种很好的做法,有助于加快渲染速度并使部分加载的页面看起来更好一些.

如何只计算原始图像的尺寸,如何计算blobstore生成缩略图的尺寸?

我以前的尝试并不是很准确,大部分时间都是一两个像素(可能是由于四舍五入).

我知道获取缩略图而不是使用图像API检查尺寸会起作用,但我认为效率低下.

这是我目前用来计算它的代码,然而,它偶尔偏离一个像素,导致浏览器稍微拉伸图像,导致调整大小的文物以及性能较差.

from __future__ import division
def resized_size(original_width,original_height,width,height):
    original_ratio = float(original_width) / float(original_height)
    resize_ratio = float(width) / float(height)
    if original_ratio >= resize_ratio:
        return int(width),int(round(float(width) / float(original_ratio)))
    else:
        return int(round(float(original_ratio) * float(height))),int(height)

准确性非常重要!

http://markmail.org/message/4di24iqm7zhc4rwc

你现在唯一的办法是在python中实现你自己的rint.

认情况下,rint会执行“round to even”和pythons round,这会做其他事情.
这是一个简单的实现(没有inf -inf的边缘案例处理等)

import math

def rint(x):
  x_int = int(x)
  x_rem = x - x_int  # this is problematic
  if (x_int % 2) == 1:
    return round(x)
  else:
    if x_rem <= 0.5:
      return math.floor(x)
    else:
      return math.ceil(x)

上面的代码是如何在理论上实现的.问题在于
x_rem. x – x_int应该得到小数部分,但你可以得到
分数增量.因此,如果需要,您可以尝试添加阈值

import math

def rint(x):
  x_int = int(x)
  x_rem = x - x_int
  if (x_int % 2) == 1:
    return round(x)
  else:
    if x_rem - 0.5 < 0.001:
      return math.floor(x)
    else:
      return math.ceil(x)

在这里.我硬编码了一个0.001门槛.阈值处理本身就存在问题.
我想你真的需要玩rint实现并适应它
到您的应用程序,看看什么效果最好.祝好运!

总结

以上是编程之家为你收集整理的python – App Engine:通过从blobstore提供缩略图来计算要生成的缩略图的尺寸全部内容,希望文章能够帮你解决python – App Engine:通过从blobstore提供缩略图来计算要生成的缩略图的尺寸所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶