我试图调整具有透明部分的PNG的大小,首先我使用了:

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);
[sourceImage  drawInRect:CGRectMake(0,0, newSize.width, newSize.height)];
UIImage* targetImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但是生成的图像是不透明的。然后,我读到默认情况下drawInRect将图像绘制为不透明,因此我将drawInRect行修改为:
[fromImage  drawInRect:CGRectMake(0,0, newSize.width, newSize.height) blendMode:kCGBlendModeNormal alpha:0.0];

结果图像为空白,我认为drawInRect中应该有一些参数组合,这些参数可以保持图像的透明度。

我搜索了其他线程,到处都可以看到通用的大小调整代码,但是没有地方谈论具有透明部分的图像。

有人有主意吗?

最佳答案

CGRect rect = CGRectMake(0,0,newsize.width,newsize.height);
UIGraphicsBeginImageContext( rect.size );
[sourceImage drawInRect:rect];
UIImage *picture1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSData *imageData = UIImagePNGRepresentation(picture1);
textureColor=[UIImage imageWithData:imageData];

10-07 14:20