NSBitmapImageRep Data Форматировать изображение значка приложения? - PullRequest
0 голосов
/ 02 апреля 2010

у меня есть массив данных char *, который был в RGBA и затем перемещен в ARGB

Суть в том, что изображение установленного приложения выглядит полностью испорченным, и я не могу понять, почему?

    //create a bitmap representation of the image data.
   //The data is expected to be unsigned char**
   NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
       initWithBitmapDataPlanes : (unsigned char**) &dest
       pixelsWide:width pixelsHigh:height
       bitsPerSample:8
       samplesPerPixel:4
       hasAlpha:YES
       isPlanar:NO
       colorSpaceName:NSDeviceRGBColorSpace
       bitmapFormat: NSAlphaFirstBitmapFormat
       bytesPerRow: bytesPerRow
       bitsPerPixel:32 ];

   //allocate the image
   NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
   [image addRepresentation:bitmap];


   if( image == NULL) {
       printf("image is null\n");
       fflush(stdout);
   }

   //set the icon image of the application
   [NSApp setApplicationIconImage :image];

   //tell the image to autorelease when done
   [image autorelease];

Что в этих значениях не верно? изображение выглядит очень разноцветным и пиксельным, а также с прозрачными частями / линиями.

РЕДАКТИРОВАТЬ: после изменения байтов в строке на ширину * 4 (линия сканирования), это изображение, которое я получаю. ! [альтернативный текст] [1]

Исходное изображение - просто оранжевый квадрат.

EDIT2: обновлено изображение и некоторые параметры.

Спасибо!

альтернативный текст http://www.freeimagehosting.net/uploads/3793520d98.png

1 Ответ

1 голос
/ 02 апреля 2010

Полезно указывать 0 для bytesPerRow, если вы также передаете NULL для данных (и, таким образом, позволяете представителю распределять их самостоятельно). Если вы передадите ноль, вы попросите систему использовать «лучший» bytesPerRow, который нестабилен между архитектурами и версиями ОС. Это не ширина * bitsPerPixel, она выровнена для выравнивания.

Это то, что неправильно, по крайней мере.

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