Πρόσβαση σε δεδομένα εικόνας από ένα bitmap δεδομένο ένα δείκτη

ψήφοι
0

Το πρόβλημά μου διαβάζει τα δεδομένα pixel σωστά τη στιγμή έχω το δείκτη.

Έτσι έχω μια εικόνα που καταλαμβάνει ολόκληρη την οθόνη του iPhone και δεν έχει κανάλι άλφα (24 bits ανά pixel, 8 bits ανά συνιστώσα, 960 bytes ανά σειρά) και θέλετε να μάθετε το χρώμα ενός συγκεκριμένου pixel.

Έχω το δείκτη στα δεδομένα

UInt8 *data = CFDataGetBytePtr(bitmapData);

αλλά τώρα δεν είμαι βέβαιος πώς να δείκτη στα στοιχεία που δίνονται σωστά μια συντεταγμένη;

Δημοσιεύθηκε 12/01/2009 στις 18:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1
UInt8 *data = CFDataGetBytePtr(bitmapData);

unsigned long row_stride = image_width * no_of_channels; // 960 bytes in this case
unsigned long x_offset = x * no_of_channels;

/* assuming RGB byte order (as opposed to BGR) */
UInt8 r = *(data + row_stride * y + x_offset );
UInt8 g = *(data + row_stride * y + x_offset + 1);
UInt8 b = *(data + row_stride * y + x_offset + 2);


/* less portable but if you want to access it in as a packed UInt32, you could do */
UInt32 color = *(data + row_stride * y + x) & 0x00FFFF;  /* little endian byte ordering */
Απαντήθηκε 12/01/2009 στις 22:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more