Вы должны поместить непрозрачный в NO в вашем случае для прозрачного изображения

аюсь изменить размер изображения в соответствии с моим взглядом, поэтому я написал этот код для этого.

 -(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    // Create a bitmap context.
    UIGraphicsBeginImageContextWithOptions(newSize, YES, [UIScreen mainScreen].scale);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

    NSData *imageData = UIImagePNGRepresentation(newImage);
    UIGraphicsEndImageContext();


    UIImage *img=[UIImage imageWithData:imageData];

    return img;

}

Он работает нормально, но когда я получаю изображение, его прозрачная часть становится черной, может быть, он превращает его в JPG. Я использовал изображение PNG. Есть идеи? Заранее спасибо.

Ответы на вопрос(2)

https://developer.apple.com/documentation/uikit/1623912-uigraphicsbeginimagecontextwitho?language=objc

Метод:

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);

Где непрозрачный

непрозрачный Логический флаг, указывающий, является ли растровое изображение непрозрачным. Если вы знаете, что растровое изображение полностью непрозрачно, укажите YES, чтобы игнорировать альфа-канал и оптимизировать хранилище растрового изображения. Указание NO означает, что растровое изображение должно включать альфа-канал для обработки любых частично прозрачных пикселей.

Эта функция используется для настройки среды рисования для рендеринга в растровое изображение. Формат для растрового изображения - это 32-разрядный целочисленный пиксельный формат ARGB с использованием порядка байтов хоста. Если для параметра opaque задано значение YES, альфа-канал игнорируется, а растровое изображение считается полностью непрозрачным (kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host). В противном случае каждый пиксель использует предварительно умноженный формат ARGB (kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host).

Вы должны поместить непрозрачный в NO в вашем случае для прозрачного изображения

Решение Вопроса

Вы должны использоватьNO в качестве второго аргумента, это переключает прозрачность изображения.

UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale);

Проверять, выписыватьсяДокументация Apple Больше подробностей.

 V-Dev08 сент. 2017 г., 14:55
Это правильный ответ. Спасибо, приятель :)

Ваш ответ на вопрос