Создание CGImageContext для изменения размера UIImage не удается в симуляторе - PullRequest
2 голосов
/ 24 января 2009

У меня есть некоторый код для изменения размера UIImage (в категории до UIImage), который сначала генерирует контекст изображения:

CGImageRef oldImage = [self CGImage];
CGSize oldSize = [self size];

CGContextRef context = CGBitmapContextCreate(NULL, //Data
    newSize.width, //Width
    newSize.height, //Height
    CGImageGetBitsPerComponent(oldImage), // Bits per Component
    4 * newSize.width, //Bytes per Row
    CGImageGetColorSpace(oldImage), //Color Space
    CGImageGetBitmapInfo(oldImage)); //Info

На устройстве этот код работает хорошо, но на симуляторе он выходит из строя со следующей ошибкой:

<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component colorspace; kCGImageAlphaNone; 428 bytes/row.

У кого-нибудь есть объяснение этому? Если я правильно помню, до 2.2 все работало нормально Спасибо!

1 Ответ

3 голосов
/ 25 января 2009

Я очень мало знаю об этом, но мое дикое предположение состоит в том, что ваш аргумент Bytes Per Row должен быть 3 * newSize.width, так как изображение сообщает об отсутствии альфа-компонента.

Если это не сработает, вы можете обратиться к поддерживаемым пиксельным форматам в Руководстве по программированию Quartz 2D для получения дополнительной информации. Что огорчает, так это то, что нет записей для 24 bpp, хотя об этом и сообщает ошибка. Возможно, вы захотите записать соответствующие значения как в симуляторе, так и в устройстве, чтобы увидеть, есть ли другие расхождения.

...