by dplummer » Sat Nov 25, 2017 4:34 pm
Hi,
I want to display Album Art that is stored in a tag from a Python program. I can access the SDBImage object and extract the image dimensions etc but so far none of my attempts to use the ImageData value to create an image have worked. My current code is as follows:
Code: Select all
print("Image format:", img.ImageFormat, "Size: ", img.Width, " x ", img.Height, " Length: ", img.ImageDataLen)
iw = img.Width
ih = img.Height
p = ctypes.cast(img.ImageData, ctypes.c_char_p)
im = PIL.Image.frombytes("RGB", (iw, ih), p, "jpeg", "RGB", None, 1)
im = im.resize((256, 256))
self.albumimage = PIL.ImageTk.PhotoImage(im)
self.imgcanvas.create_image(128, 128, image=self.albumimage, anchor=tk.CENTER)
self.imgcanvas.update()
This correctly reports the image details:
"Image format: image/jpeg Size: 500 x 492 Length: 43667"
then throws the error:
"ValueError: cannot decode image data"
If I create the PhotoImage from a file saved from the same album the image is displayed correctly.
I have studied the information
http://www.mediamonkey.com/wiki/index.p ... :ImageData which gives an example in VB and have also read the topic
http://www.mediamonkey.com/forum/viewto ... ta#p376271
The latter suggests writing the data to an intermediate file, however I cannot work out how to do this in Python either.
Could someone post an example please of how one might do this in Python 3
Many thanks
Hi,
I want to display Album Art that is stored in a tag from a Python program. I can access the SDBImage object and extract the image dimensions etc but so far none of my attempts to use the ImageData value to create an image have worked. My current code is as follows:
[code]
print("Image format:", img.ImageFormat, "Size: ", img.Width, " x ", img.Height, " Length: ", img.ImageDataLen)
iw = img.Width
ih = img.Height
p = ctypes.cast(img.ImageData, ctypes.c_char_p)
im = PIL.Image.frombytes("RGB", (iw, ih), p, "jpeg", "RGB", None, 1)
im = im.resize((256, 256))
self.albumimage = PIL.ImageTk.PhotoImage(im)
self.imgcanvas.create_image(128, 128, image=self.albumimage, anchor=tk.CENTER)
self.imgcanvas.update()
[/code]
This correctly reports the image details:
"Image format: image/jpeg Size: 500 x 492 Length: 43667"
then throws the error:
"ValueError: cannot decode image data"
If I create the PhotoImage from a file saved from the same album the image is displayed correctly.
I have studied the information [url]http://www.mediamonkey.com/wiki/index.php/ISDBImage::ImageData[/url] which gives an example in VB and have also read the topic [url]http://www.mediamonkey.com/forum/viewtopic.php?f=19&t=74099&p=376271&hilit=python+ImageData#p376271[/url]
The latter suggests writing the data to an intermediate file, however I cannot work out how to do this in Python either.
Could someone post an example please of how one might do this in Python 3
Many thanks