OTA bitmap

OTA Bitmap was a specification designed by Nokia for black and white images for mobile phones.

The OTA or Over The Air Bitmap was defined by Nokia as part of their Smart Messaging specification, to send pictures as a series of one or more concatenated SMS text messages. The format has a maximum size of 255x255 pixels. It is very rare for an OTA bitmap to measure anything other than 72x28 pixels (for Picture Messages) or 72x14/72x13 pixels (for Operator Logos). The specification contains a byte of data to be used for indicating a multicolour image. This was to future-proof the standard, but the advent of MMS meant it never got to implementation.

Basic format description
The OTA Bitmap format is a monochrome, uncompressed format using one bit per pixel. As the format was designed for cellular phones, there is no standard computer format. It may be stored as a binary file or as hex (usually without spaces) in a text file. Recognized extension is .otb.

The data header
Before the image itself there is a header. The header is four bytes wide. A typical example is: . These are: 00 The 'Infofield' (always remains as 00). 48 The width of the bitmap, 72 pixels in this case (48 is hex for 72). 1C The height of the bitmap, 28 pixels in this case (1C is hex for 28). 01 The number of colours (always 1).

Other possibilities may be:  (for 72x14 bitmaps),   (for 72x13 bitmaps).

Encoding the pixels
After the header the image itself starts. This example will use the following 72x28 pixel image.

The first 8 pixels, reading right from the top left hand corner are one white (0) followed by seven blacks (1111111), giving the first byte, in Binary, as 01111111.

Converting from the binary 01111111 to hex, results in the first byte that represents the pixels (7F). The next 8 characters are 8 blacks (11111111 or FF) and so on.

When all pixels from the top row are encoded, simply move to the next. There are no markers to indicate a new row, that information is contained in the header.

In the case of an OTA bitmap that is not a multiple of eight pixels in width, a single byte is used to convey information from two lines (e.g. two pixels from the first row and six from the second.) This is not the case in some other formats, so it is important to exercise care when converting between OTA and formats like WBMP.

Putting it together
Here is the result of the image converted to OTA. 00 48 1C 01 //Header 7F FF EF FF EF FF FB FF FE //First Row 40 3F E8 38 2F FF FB FF FE //Second Row 48 3F A8 38 2F 9F FB FF FE //Third Row 4C FF A9 FF 2F 8F FA DA DA //Fourth Row 4E FF 29 01 2F 80 FA 52 52 5E 7F 69 31 2F BF 7B 07 06 4F FF 69 79 2F BE FB 77 76 47 FF 69 79 2F BE 7B 07 06 47 FE EF 7D EF BE 7B FF FE  47 FC EF 7D E7 BC F1 FF FC   40 F0 EF 7D E7 7C F1 ED BC   21 E7 C9 79 27 98 F1 E5 3C 21 E7 C9 39 27 C8 F1 F0 7C 16 6F 89 39 23 E6 E0 F7 78 15 2F 88 82 23 F3 E0 F0 78 08 3F 04 44 43 D7 E0 FF F8  04 3E 02 28 81 EF C0 7F F0   02 3C 01 39 00 FF 80 3F E0   01 38 00 BA 00 7F 00 1F C0   00 F0 00 7C 00 3E 00 0F 80 FF C0 00 38 00 1C 00 07 FF  55 FF FF FF FF FF FF FF AA   2A F3 87 87 3F 1E 67 0F 54 15 F3 93 9F 3E 4E 27 27 A8  2A F3 87 8F 3E 4E 07 27 54 55 F3 93 9F 3E 0E 47 27 AA  FF F3 9B 87 0E 4E 67 0F FF  //Penultimate Row 00 FF FF FF FF FF FF FF 00 //Last Row

Read/write support
Note to review: there is no write support for OTA format in XnView
 * ImageMagick
 * XnView (Not XnviewMP use legacy Xnview version) (as of version 1.97, Tools → Options → General → Display all image file types flag must be enabled, otherwise XnView will neither display nor save files of this format)
 * Despite the image format calls OTA as the mentioned it above, image files can only be viewable if the file extension is ".otb" if you have any ota bitmap files, to view them first you could change its extensions to ".otb"
 * File Viewer for Android This android app also read .otb files. App can be download from Google Play Store