Нужен пример того, как создавать / манипулировать данными пикселей изображения с помощью iPhone SDK - PullRequest
4 голосов
/ 04 мая 2010

Ищете простой пример или ссылку на учебник.

Скажем, у меня есть куча значений, хранящихся в массиве. Я хотел бы создать изображение и обновить данные изображения из моего массива. Предположим, что значения массива являются данными интенсивности и будут обновлять изображение в градациях серого. Предположим, что значения массива находятся в диапазоне от 0 до 255 - или я преобразую его в этот диапазон.

Это не для целей анимации. Скорее изображение будет обновляться на основе взаимодействия с пользователем. Это то, что я знаю, как преуспеть в Java, но я очень новичок в программировании на iPhone. Я погуглил некоторую информацию о CGImage и UIImage - но запутался, с чего начать.

Любая помощь будет оценена.

Ответы [ 3 ]

4 голосов
/ 04 мая 2010

У меня есть пример кода из одного из моих приложений, который берет данные, хранящиеся в виде массива без знака, и превращает их в UIImage:

// unsigned char *bitmap; // This is the bitmap data you already have.
// int width, height; // bitmap length should equal width * height

// Create a bitmap context with the image data
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(bitmap, width, height, 8, width, colorspace, kCGImageAlphaNone);
CGImageRef cgImage = nil;
if (context != nil) {
    cgImage = CGBitmapContextCreateImage (context);
    CGContextRelease(context);
}
CGColorSpaceRelease(colorspace);

// Release the cgImage when done
CGImageRelease(cgImage);
1 голос
/ 10 июня 2010

Если ваше цветовое пространство - RGB, и вам нужно учесть альфа-значение, передайте kCGImageAlphaPremultipliedLast как последний параметр функции CGBitmapContextCreate.

Не используйте kCGImageAlphaLast, это не будет работать, потому что растровые контексты не поддерживают альфа, который не умножается предварительно.

0 голосов
/ 04 мая 2010

Книги, на которые я ссылался в этом SO-ответе , содержат образцы кода, демонстрации манипуляций с изображениями и обновления через взаимодействие с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...