Step 1: Intro to PPM File Format
What is in a PPM file?
PPM file description: http://netpbm.sourceforge.net/doc/ppm.html
This 5 x 3 pixel image (drawn in GIMP, using only 255 and 0 for RGB values) gave the following when opened in TextEdit:
P6 // "Magic Number" Image type# CREATOR: GIMP PNM Filter Version 1.1 // Comment5 3 // Image Width and Height255 // Max color valueˇˇQˇQˇQˇ6ˇ6ˇ // Actual Data?
At first glance, I wanted each character to correspond to a specific color because the pattern almost matched. I looked up the individual ASCII characters and their binary forms to further investigate...
ASCII | DECIMAL | BINARY | COLOR I WANT IT TO BE |
NA? | 32 | 00100000 | Red?? |
ˇ | 136 | 10001000 | Black?? |
Q | 81 | 01010001 | Green?? |
6 | 6 | 00000110 | Blue?? |
**HOWEVER**
P 6 means the data is stored in a binary format. Each pixel uses three bytes of data - one byte each for R, G, and B. ( Max color value makes sense : 2^8 = 256 ).
Expected # Bytes = Width x Height x 3 = 15 x 3 = 45 bytes.
If a char is 1 byte, why am I only seeing 12 characters? What happened to the other 33 bytes? Are there characters I cannot see?
PPM code references: http://www.cse.unr.edu/~bebis/CS302/
November 16, 2011
The TextEdit version of my PPM image was NOT what I expected. From my understanding, it should have been something like:
00000000 00000000 00000000 --for black
11111111 00000000 00000000 --for red
00000000 11111111 00000000 --for green
00000000 00000000 11111111 --for blue
I coded a tack to read from the file, store it in a char array, and print it to the screen. The data portion was seemingly missing... (Turns out the ascii codes for 0 and 255 are not visible characters.)
Changed the colors from 255 (1111 1111 = (null) ) to 125 ( 0111 1101 = } ) and 0 (0000 0000) to 33 (00100001 = !), I would expect to see :
!!! }!! !!! }!! !!!
!}! !!! !}! !!! !{!
!!! !!} !!! !!} !!!
Instead, I opened the .ppm with TextEdit and got this:
Maybe TextEdit isn't the correct way to view the data. How does it open files? Can it open files with binary, and does it display binary as ascii?P6# CREATOR: GIMP PNM Filter Version 1.15 3255ˇˇˇˇˇˇˇ
For a different viewing method, I consulted J Bowles who showed me the following terminal commands for a more reliable way of viewing:
od -xc ColorTestGrid.ppm | less
od -bc ColorTestGrid.ppm | less
Detailed description found HERE.
These (as well as emacs) gave:
P6
# CREATOR: GIMP PNM Filter Version 1.1
5 3
255
!!!}!!!!!}!!!!!!}!!!!!}!!!!!}!!!!!!}!!!!!}!!!As expected. Viewing mystery solved!
References : http://www.cplusplus.com/doc/tutorial/files/
http://en.wikipedia.org/wiki/Netpbm_format
http://www.asciitable.com/
http://linux.about.com/library/cmd/blcmdl_od.htm
No comments:
Post a Comment