Hi,
As part of a custom exporter, I'm trying to copy the pixels of a texture image to a file.
However, it seems that accessing the Image.pixel array is very slow. If I read every pixel of a 128x128 image and write it to a file, it takes around 10 seconds. For a 1024x1024 image, it seems to take forever (I didn't have the patience to wait and killed Blender).
What I'm doing is something like this (I'm new to Python):
| Code: |
f = open("/tmp/pixels", "wb")
img = bpy.images[0]
for i in range(0, img.size[0] * img.size[1] * 4):
f.write(struct.pack("@f", img.pixels[i]))
|
This is on OS-X with Blender 2.64. Am I not supposed to use the Image.pixels array like this? I saw somewhere that it would be faster to convert it to a list first (with list(img.pixes)), but then the conversion seems to take equally long...
Thanks, that helps!
For those reading this thread later, the solution is writing the pixels out like this:
| Code: |
f.write(bytes([int(pix*255) for pix in img.pixels]))
|
where f is your output-file.