2013-05-06 3 views
0

Nous utilisons l'API images de AppEngine sans problème pour l'année écoulée. Soudain, dans la dernière semaine, l'image API semble corrompre l'image. Nous utilisons l'API images pour faire quelques opérations différentes mais celle qui semble causer le problème est que nous faisons une image.rotation (0) sur les données TIFF pour la convertir en PNG. (Nous n'avons pas essayé d'autres conversions de type de fichier mais le fait est que cela fonctionnait depuis plus d'un an alors pourquoi devrait-il cesser de fonctionner soudainement?) En outre, nous avons besoin de travailler avec TIFF en PNG comme TIFF est le format des données entrantes)images Google AppEngine API images soudainement corruptrices

Cela a fonctionné sans problème depuis longtemps et tout à coup aujourd'hui, je trouve que tout TIFF qui passe par le processus est corrompu sur la sortie. On dirait que c'est doublé et faussé.

est d'utiliser l'API Python 2.7 sur AppEngine 1.7.7. Nous utilisons l'API Google images directement via PIL.

Aidez s'il vous plaît! Ceci est en train de tuer notre environnement de production.

code Exemple:

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) 
+0

pourrait vous envoyer un code - iE sauvegarde/récupération d'images? –

+0

pardonnez-moi pour avoir l'air évident, mais comme la situation est critique je vais le dire, avez-vous récemment mis à jour la version AppEngine? Si c'est le cas, essayez de retourner à l'œuvre de travail perméable jusqu'à ce que vous êtes en mesure de comprendre celui-ci? – skywalker

+0

Exemple de code @peterretief ajouté pour vous. – Joel

Répondre

1

Cela est avéré être en raison d'un changement récent à l'API d'images qui a introduit un bug qui affecté les opérations impliquant des fichiers TIFF, qui a depuis été rétablie. Plus d'informations sont dans le rapport de bogue original.

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

+0

Merci, j'apprécie votre aide :) – Joel

0

lecture de here

degrés La quantité pour faire tourner l'image, comme un certain nombre de degrés, par multiples de 90 degrés. Doit être un int ou long.

pouvez-vous s'il vous plaît essayer

png = images.rotate(sample, 360) 

et si cela ne fonctionne pas essayer (rotation essentiellement deux fois 180 degrés chacun de sorte que le cadre d'origine est effacée)

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

Hope it helps

+0

aucun effet j'ai essayé à la fois la suggestion 360 et 180 deux fois j'ai même essayé la fonction images.im_feeling_lucky() - pas de chance.J'ai réduit le problème au fait que l'image source est un tiff group3. Ce problème ne se produit pas si l'image source est un autre type de fichier. Cependant, cela ne m'aide pas puisque mes images sources vont toujours être des tiffs group3 puisqu'elles proviennent d'un service de fax. Ce qui est vraiment dérangeant, c'est que quelque chose qui fonctionne bien depuis plus d'un an et soudainement cessé de fonctionner sans aucun avertissement. :( – Joel

+0

vous pouvez essayer en définissant la sortie sur JPEG, au lieu de PNG, vous pouvez également essayer de déployer votre code sur une nouvelle instance (arrêter toutes les instances en cours d'exécution), juste pour tester. Quelques images que vous avez reçues quand ça fonctionnait bien, peut-être que quelque chose a changé au niveau de la source d'image .. Je ne suis pas un expert en python, mais en ajoutant try/catch je pourrais avoir plus d'informations. Entre-temps, il doit y avoir d'autres options pour convertir tiff en png en python, vous pouvez les utiliser pour une solution immédiate – skywalker

+0

Essayer: Type d'image en sortie JPG - sans effet Essayer: Arrêter toutes les instances - aucun effet Essayez: Test avec l'ancienne image source de b Avant le problème - aucun effet. Essayez: Contactez Google avec ticket de support pour signaler un bug - Comment? J'ai regardé partout! J'ai même demandé le support Silver Cloud de Google, mais ils m'ont dit qu'ils me contacteraient avant même que je puisse m'inscrire. D'autres options python pour convertir un tiff en un png qui fonctionne sur appengine? Je ne peux pas en trouver. PIL ne fonctionne pas avec group3 tiff :( – Joel

0

J'utilise cette option pour charger l'image, je ne pas utiliser des images tIFF mais qui pourrait être le problème, je suppose - peut-être utiliser PIL pour conve rt l'image?

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") 
+0

Merci, mais le problème est l'image tiff compressée de group3 qui fonctionnait normalement et le service d'images de Google a soudainement cessé de fonctionner correctement et a commencé à corrompre l'image – Joel

Questions connexes