난이 방법으로 떨어져 전달하고 그 결과 CGImageRef
을 사용하고 있습니다로 마무리를 위해 설치하는 CGImageDestinationRef
에 추가, kUTTypeJPEG
: 난 결과 JPEG 최상의 색상이 있는지 확인해야JPEG로 변환 할 때 어떻게 CGImageAlphaInfo를 고려해야합니까?
- (CGImageRef)scaleImage:(CGImageRef)fullImageRef originalSize:(CGSize)originalSize scale:(CGFloat)scale;
{
CGSize imageSize = originalSize;
CGRect scaledRect = CGRectMake(0.0, 0.0, imageSize.width * scale, imageSize.height * scale);
CGColorSpaceRef colorSpace = CGImageGetColorSpace(fullImageRef);
CGContextRef context = CGBitmapContextCreate(NULL, scaledRect.size.width, scaledRect.size.height, 8, 0, colorSpace, CGImageGetAlphaInfo(fullImageRef));
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGImageRef subImage = CGImageCreateWithImageInRect(fullImageRef, scaledRect);
CGContextDrawImage(context, scaledRect, subImage); // offscreen
CGImageRef scaledImage = CGBitmapContextCreateImage(context);
CGImageRelease(subImage);
subImage = NULL;
subImage = scaledImage;
CGImageRelease(scaledImage);
CGContextFlush(context);
CGContextRelease(context);
return subImage;
}
원본과 일치합니다.
내 목적에 대한 CGImageAlphaInfo 상수의 실제 역할이 명확하지 않습니다.
나는 Quartz 문서를 읽었으며, Quartz book으로 프로그래밍하기 좋은 책 (Gelphman과 Laden 저)을 읽었지 만, 여전히 내 방법에 대해서는 잘 모른다.
다른 속성 캡처와 함께 jpeg 속성 사전에 kCGImageDestinationLossyCompressionQuality 속성을 1.0으로 설정했습니다.
원본의 색을 유지하기 위해 더 많은 작업을해야합니까?
이것은 macos이며 gc를 사용합니다.
감사합니다. 그건 내가 필요한 정보와 정확히 일치한다. – lulu