[Ipe-discuss] Ipe image format

Otfried Cheong otfried at ipe.airpost.net
Sun Jan 5 19:35:37 CET 2014



On 1/5/2014 8:23 PM, Sebastian Kürten wrote:
> I'm working on a program that exports Ipe files. Now I try to insert
> bitmaps via the <bitmap> element and referencing it via <image> later
> in the file. What I did not find out yet is what format the bitmap is
> encoded with.
>
> Since I did not find any information on the Web, I took a look at what
> Ipe will produce. When I use Ipe to create a file with a bitmap, I get
> encoding="base64", Filter="FlateDecode", BitsPerComponent="8",
> length="x"
>
> I am able to decode the base64 string to some binary blob of length x,
> but what is the format of the decoded string?

Have you looked at

http://ipe7.sourceforge.net/manual/manual_42.html

and

http://ipe7.sourceforge.net/manual/manual_44.html ?

Ipe deliberately accepts a simpler format than it produces itself, to 
make it easy for other software to produce Ipe-compatible files.

If you just want to include a bitmap in a drawing, the easiest would be 
to say

<image rect="100 100 200 200" width="600" height="400"
   ColorSpace="DeviceRGB" BitsPerComponent="8">
000000ff0000aaff00125c7d.....
</image>

In other words, you don't need the <bitmap> element. you can put the 
bitmap data right inside the <image> element.

If you omit the Filter attribute, then the image data is simply the 
pixels of the image, from top left to bottom right, row by row.  In my 
example I omitted the encoding attribute, and so I provide image data in 
hexadeximal.  So 000000 is a single black pixel, ff0000 a red pixel, 
00ff00 a green pixel, and ffffff a white pixel.

Alternatively you can provide the same data in base64 und give the 
encoding attribute. If you want to use Filter="FlateDecode", you would 
need to first compress the raw image byte stream using zlib and then 
convert it to ASCII (either in hexadecimal or base64).

Cheers,
  Otfried



More information about the Ipe-discuss mailing list