Samat Sadvakasov
Samat Sadvakasov

Reputation: 639

How to convert image which type is bytes to numpy.ndarray?

I'm trying to optimize my code.

First, I get an image, which type is bytes

Then I have to write that image to file system.

with open('test2.jpg', 'wb') as f:
    f.write(content)

Finally I read this image with

from scipy import misc
misc.imread('test2.jpg')

which convert image to np.array.

I want to skip part where I write image to file system, and get np.array.

P.S.: I tried to use np.frombuffer(). It doesn't work for me, cause two np.arrays are not the same. Convert str to numpy.ndarray

For test you can try yourself:

file = open('test1.jpg', 'rb')
content = file.read()

Upvotes: 1

Views: 2245

Answers (1)

Mark Setchell
Mark Setchell

Reputation: 207455

My first answer in rap...

Wrap that puppy in a BytesIO

And away you go

So, to generate some synthetic data similar to what you get from the API:

file = open('image.jpg','rb')
content = file.read()

That looks like this which has all the hallmarks of a JPEG:

content = b'\xff\xd8\xff\xe0\x00\x10JFIF...

Now for the solution:

from io import BytesIO
from scipy import misc

numpyArray = misc.imread(BytesIO(content))

Upvotes: 3

Related Questions