I am trying to understand how to create PBM / PGM / PPM binaries. As I know, for each format there are two types: simple and raw. For example, the structure of the black PBM 5x5 is as follows:
P1
So, as you can see, this is simple: white - 0, black - 1. However, PBM has the original version, which looks like this:
'P4\n
How can i do this? PBM format description says:
A raster of Height rows, in order from top to bottom. Each row is Width bits, packed 8 to a byte, with don't care bits to fill out the last byte in the row. Each bit represents a pixel: 1 is black, 0 is white. The order of the pixels is left to right. The order of their storage within each file byte is most significant bit to least significant bit. The order of the file bytes is from the beginning of the file toward the end of the file. A row of an image is horizontal. A column is vertical. The pixels in the image are square and contiguous.
I do not understand what I need to do; I suspect that I may need to use struct or array.array , but I'm not sure. I need your help; Could you give an example in Python, how to create such a file?
>>> size = (5, 5) >>> array = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] >>> create_pbm(size, array) 'P4\n5 5\n\xf8\xf8\xf8\xf8\xf8'
I need a good speed because I need to process much larger images (e.g. 2000x5000). But the problem is that I need to use pure Python, without ctypes and libraries. Could you please help me and give a small example of creating PBM binaries?
It will be even more surprising if you tell me about binary processing of PGM and PPM.
Thanks!