I am trying to read a JPG image in Python.
So far i have:
f = open("test.jpg")
ima = f.read(16)
print "'%s'"% (ima)
It reads 16 bytes and displays the string in console, but it looks like I cannot display more than 32 bytes. Why?
When it tries to read 32 or more bytes, the output will be the same as when it read 16 bytes. Why can I not read more than 16 bytes of the jpeg image?
Two issues here:
Set read mode to binary. This way file.read
function won't try to convert '\r\n' sequences.
You're trying to print NULL-terminated string to the console. print
function finds first zero character in your string and terminates. Use binascii.hexlify
to convert it to the hex:
f = open("test.jpg", "rb")
ima = f.read(16)
print "%s" % (binascii.hexlify(ima))
You probably need to set the open mode to binary:
f = open("test.jpg", "rb") # 'rb' here means "read mode, binary"
See this similar question for a more thorough description.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With