Я проверяю, есть ли у изображения прозрачная область (альфа) или нет. Я понял, что мне нужно изменить цвет UIImage
Я реализовал приведенный ниже метод, чтобы проверить, есть ли на изображении alpha
или нет.
- (BOOL) checkAlpha : (UIImage*) image
{
for(int x = 0; x < image.size.width ; x++)
{
for(int y = 0; y < image.size. height; y++)
{
CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((image.size.width * y) + x ) * 4; // The image is png
UInt8 red = data[pixelInfo]; // If you need this info, enable it
UInt8 green = data[(pixelInfo + 1)]; // If you need this info, enable it
UInt8 blue = data[pixelInfo + 2]; // If you need this info, enable it
UInt8 alpha = data[pixelInfo + 3]; // I need only this info for my maze game
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];
DLog(@"color : %@",color);
DLog(@"alpha : %hhu",alpha)
if (alpha)
return YES; // display original image from url.
else
return NO; // apply brand color here.
}
}
return YES;
}
Этот метод работает нормально, но для некоторых изображений он создает проблемы. См. Изображение ниже:
Для альфа-изображения выше возврат 0;
И для двух вышеупомянутых изображений альфа имеет некоторое значение.
Все 3 изображения имеют одинаковый белый фон. Для первого изображения также должна быть некоторая альфа. это не должно быть 0. Пожалуйста, объясните мне это? есть ли в моем методе ошибка кода или что?