def rotate(self, angle=0): """does a looseless rotation of the given jpeg file""" if os.name == 'nt' and self.pil != None: del self.pil x = self.pixelsX y = self.pixelsY logger.debug("Before rotation %i, x=%i, y=%i, scaledX=%i, scaledY=%i" % (angle, x, y, self.scaledPixbuffer.get_width(), self.scaledPixbuffer.get_height())) if angle == 90: if imageCache is not None: Exiftran.rotate90(self.fn) newPixbuffer = self.scaledPixbuffer.rotate_simple(gtk.gdk.PIXBUF_ROTATE_CLOCKWISE) logger.debug("rotate 90 of %s" % newPixbuffer) self.pixelsX = y self.pixelsY = x if self.metadata is not None: self.metadata["Resolution"] = "%i x % i" % (y, x) else: Exiftran.rotate90(self.fn) self.pixelsX = None self.pixelsY = None elif angle == 270: if imageCache is not None: Exiftran.rotate270(self.fn) newPixbuffer = self.scaledPixbuffer.rotate_simple(gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) logger.debug("rotate 270 of %s" % newPixbuffer) self.pixelsX = y self.pixelsY = x if self.metadata is not None: self.metadata["Resolution"] = "%i x % i" % (y, x) else: Exiftran.rotate270(self.fn) self.pixelsX = None self.pixelsY = None elif angle == 180: if imageCache is not None: Exiftran.rotate180(self.fn) newPixbuffer = self.scaledPixbuffer.rotate_simple(gtk.gdk.PIXBUF_ROTATE_UPSIDEDOWN) logger.debug("rotate 270 of %s" % newPixbuffer) else: Exiftran.rotate180(self.fn) self.pixelsX = None self.pixelsY = None else: print "Erreur ! il n'est pas possible de faire une rotation de ce type sans perte de donnée." if imageCache is not None: self.scaledPixbuffer = newPixbuffer imageCache[self.filename] = self logger.debug("After rotation %i, x=%i, y=%i, scaledX=%i, scaledY=%i" % (angle, self.pixelsX, self.pixelsY, self.scaledPixbuffer.get_width(), self.scaledPixbuffer.get_height()))