开发者

Reading an Image (standard format png,jpeg etc) and writing the Image Data to a binary file using Objective C

开发者 https://www.devze.com 2023-03-29 00:03 出处:网络
I am pretty new to Objective C and working with Cocoa Framework. I want to read an image and then extract the image data (just pixel data and notthe header) and then write the data to a binary file. I

I am pretty new to Objective C and working with Cocoa Framework. I want to read an image and then extract the image data (just pixel data and not the header) and then write the data to a binary file. I am kind of stuck with this, I 开发者_运维技巧was going through the methods of NSImage but I couldn't find a suitable one. Can anyone suggest me some other ways of doing this?


Cocoa-wise, the easiest approach is to use the NSBitmapImageRep class. Once initialized with a NSData object, for example, you can access the color value at any coordinate as a NSColor object using the -setColor:atX:y: and -colorAtX:y: methods. Note that if you call these methods in tight loops, you may suffer a performance hit from objc_msg_send. You could consider accessing the raw bitmap data as C array via the -bitmapData method. When dealing with a RGB image, for example, the color values for each channel are stored at offsets of 3.

For example:

color values: [R,G,B][R,G,B][R,G,B]
     indices: [0,1,2, 3,4,5, 6,7,8]

To loop through each pixel in the image and extract the RGB components:

unsigned char *bitmapData = [bitmapRep bitmapData];

if ([bitmapRep samplesPerPixel] == 3) {
    for (i = 0; i < [image size].width * [image size].height; i++) {
        int base = (i * 3);

        // these range from 0-255
        unsigned char red = bitmapData[base + 0];
        unsigned char green = bitmapData[base + 1];
        unsigned char blue = bitmapData[base + 2];
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消