Attempting to make an image format

Mar 28, 2014 at 6:39pm
Title^. So far I have a general progress made, as I have the ability to do the following (during runtime/app execution):
read/write a pixel in the struct based upon the block_size (word_size)
read/write a pixel in the struct based upon the order (row major vs column major)
read/write a pixel based upon the width and height of the image

successfully open a file write out the following fields to a file(get some output):
name
order
block_size
width
height

The way I've written out the fields are in logical order, although the name
field is probrably unecessary, but can be used during runtime or identification.

1
2
3
4
5
6
7
8
9
struct ExampleImage{
    char*              ex_name;
    unsigned long long ex_order;
    unsigned long long ex_block_size;
    unsigned long long ex_width;
    unsigned long long ex_height;
//bytes written to file will be implicit...
    void*              ex_data;
};


My Secondary problems are:

How do I integrate a file header (with a magic number and version)?
I want to be able to have different algorithms for each major version
of the image format. I also want the minor version of the format to be
tied to the update (minor bug fix/enhancement).
1
2
3
4
5
6
7
8
9
struct ExampleVersion{
  union{    
  unsigned int version;
   struct{
       unsigned short ver_maj;
       unsigned short ver_min;
  }
 }u_ver;
}


Am I on a good track with the above structures? I don't put my header up here because right now it isn't necessary as I am having problems writing the image i generate up.

My Primary Problems:
Should I be writing the bytes of the image in binary form, instead of text? Each individual pixel is distinct during runtime, but when I write each pixel in a format they all appear the same. (Basically it definitely isn't my image generation algorithm, its has something to do with file IO).


Should I be writing entire image file in binary mode instead? I cannot write my image reader algorithm until I finish this up.


EDIT 1: I fixed the problem where my image data was not reading in correctly XD. The image
file now looks like a binary file (when i use monochrome generation), even though it is opened in text mode.

EDIT 2: Now that I fixed the problem where it wouldn't output bytes properly. I still have the issue of formatting.
Is it a good idea to use the " " character as a delimiter for bytes so that I can check to see
if the image file data is corrupt? Or is this an unecessary thing to do?

EDIT 3: THANKS very much in advance for anyone who can answer any of my questions.
Last edited on Mar 28, 2014 at 7:25pm
Mar 28, 2014 at 10:09pm
help please?
Mar 29, 2014 at 1:36am
anyone?
Mar 29, 2014 at 1:53am
closed account (N36fSL3A)
I'd say just save everything in binary format.
Mar 29, 2014 at 3:36pm
lol.
Mar 30, 2014 at 5:41am
Finally the algorithms are complete. But I cannot still decide on how to make the image format scale using a header. I read somewhere that you can have multiple images in a jpg or png or bmp. I'm guessing they write the header first them append with the images. My algorithm doesn't have a header write now, its pretty much a raw data file. It would be cool if I could attach an image to the forum.
Last edited on Mar 30, 2014 at 5:42am
Mar 30, 2014 at 9:51pm
Have you considered looking at how other image formats do it?

Try these for starters. Most graphics file structures don't get any more complicated than this.
http://en.wikipedia.org/wiki/BMP_file_format
http://en.wikipedia.org/wiki/Truevision_TGA
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
Mar 31, 2014 at 10:28am
Add fields to the header that contain offsets to the various sections in the file, rather than put everything in a strict order.
Apr 10, 2014 at 2:43am
As for your question of "Is it a good idea to use the " " character as a delimiter for bytes so that I can check to see
if the image file data is corrupt?", I can only recommend you to have a look at t stackoverflow.com where you can find many source codes on the imaging issue.

http://stackoverflow.com/questions/10038653/reading-a-file-in-java-by-a-delimeter
http://www.rasteredge.com/how-to/vb-net-imaging/
http://www.rasteredge.com/how-to/vb-net-imaging/sdk-programming/
Topic archived. No new replies allowed.