我和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