私は透過性を持つ UIImage を持っています。
UIImage の PNG 表現を Web サービスにアップロードしています。これは、たとえば 800K 未満のデータを受け入れます。
したがって、基本的には、サイズを縮小したいと思います(ジオメトリではなく、物理的な IE のバイト単位)。つまり、uimage の品質を下げます。
クォーツのガイドラインに私を向けないでください
UIImage の JPEG 表現の使用を提案しないでください IT は透明性をサポートしていません
画像を縮小してから拡大縮小することを提案しないでください
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);