问题
How effective is the CGContextSetInterpolationQuality method in Quartz?
Does it affect the quality of the image? If so, to what extent?
I can't see any difference between the interpolated and the non-interpolated image.
回答1:
Although this is a bit of an old question, I have recently done some benchmarking about the effects of CGContextSetInterpolationQuality and thought that its outcomes might be of interest to someone else.
In my benchmark test, I draw a set of 6 different 649x649 b&w bitmap images to build a set of 12 different jigsaw puzzle tiles. The bitmap images are scaled down by a factor of 5.0 (i.e., to 129.8x129.8) to make them fit on a 320x480 display (at retina display scale).
Run times on a 4th gen iPod touch, as reported by Instruments, are the following:
kCGInterpolationLow: 969 msec
kCGInterpolationMedium: 1690 msec
kCGInterpolationHigh: 2694 msec
kCGInterpolationNone: 545 msec
As to the visual outcome, if you compare High or Medium to Low or None, the difference is staggering. Even noticeable, IMO, the difference between None and Low; while the difference between High and Medium is not particularly noticeable in this particular test. What is clear is the difference in run times, so that in my particular case, I ended up using kCGInterpolationMedium.
kCGInterpolationNone
kCGInterpolationLow
kCGInterpolationMedium
kCGInterpolationHigh
回答2:
The method
void CGContextSetInterpolationQuality ( CGContextRef c, CGInterpolationQuality quality );
affect the way Quartz renders an image into a CGContext. This e.g. comes into play when the source image is larger or smaller than the target bitmap CGContext.
To exactly answer your question of why you don't see any noticable difference, I will need more details about the exact usage, image sizes, context types, etc.
Exactly what interpolation methods the different quality levels cover seems undocumented. A guess from my side would however be:
- Low: Nearest neighbor interpolation
- Medium: Linear or bilinear interpolation
- High: Quadratic or bicubic interpolation
Regards
来源:https://stackoverflow.com/questions/5685884/imagequality-with-cgcontextsetinterpolationquality