我和 UIImage 具有透明度。
我正在将 UIImage 的 PNG 表示形式上传到我的 Web 服务,该服务接受小于 800K 的数据。
所以基本上我想减小大小(不是几何的,而是物理的 IE,以字节为单位),即降低 uimage 的质量。
请不要将我指向 Quartz 指南
请不要使用 UIImage 的 JPEG 表示它不支持透明度
请不要让图像变小然后缩放它
我需要减少 UIImage 中的颜色任何想法如何通过 Quartz 实现它?
在我尝试之后,创建了一个上下文并绘制了图像。玩过 bytesPerRow 但仍然失败,请帮助找到解决方案!
size_t width = CGImageGetWidth(image.CGImage);
size_t height = CGImageGetHeight(image.CGImage);
size_t bitsPerComponent = CGImageGetBitsPerComponent(image.CGImage);
size_t bytesPerRow = CGImageGetBytesPerRow(image.CGImage);
CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
CGContextRef ctx = CGBitmapContextCreate(NULL, // Let CG allocate it for us
width,
height,
bitsPerComponent,
bytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedLast); // RGBA
CGColorSpaceRelease(colorSpace);
CGRect rect = CGRectMake( 0, 0, CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage));
CGContextDrawImage( ctx, rect, image.CGImage);
CGImageRef newImg = CGBitmapContextCreateImage(ctx);
UIImage* compressedImage = [UIImage imageWithCGImage:newImg];
CGImageRelease(newImg);
CGContextRelease(ctx);