0

在过去的一年里,我们一直在使用 AppEngine 的图像 API,没有任何问题。在过去一周左右突然之间,图像 API 似乎正在破坏图像。我们使用图像 API 执行一些不同的操作,但似乎导致问题的一个是我们对 TIFF 数据执行 images.rotation(0) 以将其转换为 PNG。(我们还没有尝试过其他文件类型转换,但关键是它已经工作了一年多,为什么它会突然停止工作?此外,我们需要它与 TIFF 到 PNG 一起工作,因为 TIFF 是入站数据的格式)

这在很长一段时间内都没有问题,今天突然间我发现通过该过程的任何 TIFF 在输出时都已损坏。它看起来好像是翻倍和歪斜的。

这是在 AppEngine 1.7.7 上使用 Python 2.7 API。我们直接使用 Google 图片 API,而不是通过 PIL。

请帮忙!这正在扼杀我们的生产环境。

示例代码:

from google.appengine.api import images
import webapp2

def get_sample():
    # sample.tiff is a 1bit black and white group3 tiff from a fax service
    with open("sample.tiff") as x: 
        f = x.read()
    return f

class MainHandler(webapp2.RequestHandler):
    def get(self):
        # Convert to PNG using AppEngine's images API by doing a rotation of 0 degrees.
        # This worked fine for over a year and now suddenly started corrupting the 
        # output image with a grainy double image that looks like two of the 
        # same image are layered on top of each other and vibrating.
        sample = get_sample()
        png = images.rotate(sample, 0)

        self.response.headers["Content-Type"] = "image/png"
        self.response.out.write(png)

application = webapp2.WSGIApplication([('/', MainHandler)], debug=True)
4

3 回答 3

1

事实证明,这是由于最近对图像 API 的更改引入了一个影响涉及 TIFF 文件的操作的错误,该错误已被恢复。更多信息在原始错误报告中。

https://code.google.com/p/googleappengine/issues/detail?id=9284

于 2013-05-08T23:03:57.240 回答
0

我一直在使用它来加载图像,我不使用 tiff 图像,但这可能是我猜的问题 - 也许使用 PIL 来转换图像?

class Image(BaseHandler):
    def get(self):
        employee = clockin.Employee.get(self.request.get("img_id"))
        if employee.avatar:
            self.response.headers['Content-Type'] = "image/png"
            image = images.resize(employee.avatar, 150, 150)
            self.response.out.write(image)
        else:
            self.response.out.write("No image")
于 2013-05-07T07:55:19.063 回答
0

这里阅读

度 以度数表示的图像旋转量,以 90 度的倍数表示。必须是 int 或 long。

你能试试吗

png = images.rotate(sample, 360)

如果这不起作用,请尝试(基本上每次旋转两次 180 度,以便清除原始帧)

png1 = images.rotate(sample, 180)
png = images.rotate(png1, 180)

希望能帮助到你

于 2013-05-06T23:03:14.537 回答