问题
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