我和UIImage具有透明度。降低图像质量而不降低其几何尺寸
我将UIImage的PNG表示上传到我的web服务,该服务接受的数据少于800K。所以基本上我想减小尺寸(不是几何体的几何形状但是物理的I.E.),即降低图像的质量。
请不要点我石英指南
请不提供使用的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);
听起来像是要压缩图像然后将其上传到服务器,或者将其上传到服务器可以处理的较小块中? – Luke
是的,我想要质量差但仍具有透明像素的相同图像。我不想将图像分割成小块,而只是为了降低图像的质量,将其压缩。像保存在GIMP中时压缩图像一样的功能,例如 – deimus
我会尝试分离alpha组件,然后应用jpeg压缩。另一端解压缩并应用aplha。 – MacGeek