예제 #1
0
    def readExif(self):
        """
        return exif data + title from the photo
        """
        clef = {'Exif.Image.Make':'Marque',
 'Exif.Image.Model':'Modele',
 'Exif.Photo.DateTimeOriginal':'Heure',
 'Exif.Photo.ExposureTime':'Vitesse',
 'Exif.Photo.FNumber':'Ouverture',
# 'Exif.Photo.DateTimeOriginal':'Heure2',
 'Exif.Photo.ExposureBiasValue':'Bias',
 'Exif.Photo.Flash':'Flash',
 'Exif.Photo.FocalLength':'Focale',
 'Exif.Photo.ISOSpeedRatings':'Iso' ,
# 'Exif.Image.Orientation':'Orientation'
}

        if self.metadata is None:
            self.metadata = {}
            self.metadata["Taille"] = "%.2f %s" % smartSize(op.getsize(self.fn))
            self.metadata["Titre"] = self.exif.comment
            try:
                rate = self.exif["Exif.Image.Rating"]
            except KeyError:
                self.metadata["Rate"] = 0
                self.exif["Exif.Image.Rating"] = 0
            else:
                if "value" in dir(rate): # pyexiv2 v0.2+
                    self.metadata["Rate"] = int(rate.value)
                else: # pyexiv2 v0.1
                    self.metadata["Rate"] = int(float(rate))

            if self._pixelsX and self._pixelsY:
                self.metadata["Resolution"] = "%s x %s " % (self.pixelsX, self.pixelsY)
            else:
                try:
                    self.pixelsX = self.exif["Exif.Photo.PixelXDimension"]
                    self.pixelsY = self.exif["Exif.Photo.PixelYDimension"]
                except (IndexError, KeyError):
                    pass
                else:
                    if "human_value" in dir(self.pixelsX):
                        self.pixelsX = self.pixelsX.value
                        self.pixelsY = self.pixelsY.value
                self.metadata["Resolution"] = "%s x %s " % (self.pixelsX, self.pixelsY)
            if "Exif.Image.Orientation" in self.exif.exif_keys:
                self.orientation = self.exif["Exif.Image.Orientation"]
                if "human_value" in dir(self.orientation):
                    self.orientation = self.orientation.value
            for key in clef:
                try:
                    self.metadata[clef[key]] = self.exif.interpretedExifValue(key).decode(config.Coding).strip()
                except (IndexError, KeyError):
                    self.metadata[clef[key]] = u""
        return self.metadata.copy()
예제 #2
0
파일: video_gui.py 프로젝트: kif/imagizer
 def loadVideo(self):
     """Load the video information and setup the GUI"""
     logger.debug("VideoInterface.loadVideo")
     self.video = Video(self.filename)
     self.xml.get_widget("filename").set_text(self.video.videoFile)
     self.xml.get_widget("model").set_text(self.video.camera.encode("UTF-8"))
     self.xml.get_widget("resolution").set_text("%ix%i" % (self.video.width, self.video.height))
     self.xml.get_widget("size").set_text("%.2f %s" % smartSize(os.path.getsize(self.filename)))
     self.xml.get_widget("dateTime").set_text(self.video.timeStamp.strftime("%Y:%m:%d %Hh%Mm%Ss"))
     self.xml.get_widget("duration").set_text("%s s" % self.video.duration)
     self.xml.get_widget("video").set_text("%.1f fps\t%s\t%s" % (self.video.frameRate, self.video.videoCodec, self.video.videoBitRate))
     self.xml.get_widget("audio").set_text("%i ch\t%.1fHz\t%s\t%s" % (self.video.audioChannel, self.video.audioSampleRate, self.video.audioCodec, self.video.audioBitRate))
     if "INAM" in self.video.data:
         self.xml.get_widget("title").set_text(self.video.data["INAM"])
     if "IKEY" in self.video.data:
         self.xml.get_widget("keyword").set_text(" ".join(self.video.data["IKEY"].split(";")))