vfx-2 / python_core /media /PhotoInfo.py
TaqiRaza512's picture
Initial commit
a103028
from ..common.Common import *
from ..common.Execute import *
from ..common.Log import *
from ..common.FileTypes import *
class PhotoInfo:
# Width: Width of video, in pixels
# Height: Height of video, in pixels
# ColorSpace: ColorSpace of video
# Size: File size, in bytes
# FilePath: path of file
def __init__(self, file_path):
command = "ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,height,width,color_space -of csv=s=x:p=0 " + file_path
stdout, _, errorCode = ExecuteCommand(command)
stdout = stdout.split("\n")[0]
stdout = stdout.strip()
info = stdout.split("x")
self.file_path = file_path
self.file_size = GetFileSize(file_path)
if len(info) < 4:
log.error("File " + file_path + " has size " + str(self.Size))
log.error("Error running command (return code: " + str(errorCode) + "): " + command + " | Returned string is " + stdout + " | Array is " + str(info))
index = 0
self.image_codec = info[index]
index = index + 1
self.width = int(info[index])
index = index + 1
self.height = int(info[index])
index = index + 1
self.color_space = info[index]
index = index + 1
if IsPNGFile(file_path):
self.bit_depth = 10
elif IsJPGFile(file_path):
self.bit_depth = 8
else:
log.fatal("Unsupported photo file " + file_path)
def String(self):
return json.dumps(self, default=lambda o: o.__dict__,
sort_keys=True, indent=4)
def Print(self, stream):
stream.write(self.String())