0
我使用alpha和白色圖像拍攝白色圖像。這可以在iOS 6中完美運行。但是,在iOS 7中,在使用此代碼之後,像素範圍的白色邊框將保留在非零字母圖像的邊緣。兩個操作系統之間會發生什麼變化,以保持像素級的白色邊框?更改iOS 6與iOS 7中的UIImage顏色不同
-(void)changeImageColorToColor: (UIColor *)color
CGFloat redC = 0.0, greenC = 0.0, blueC = 0.0;
const CGFloat *components = CGColorGetComponents(color.CGColor);
redC = components[0];
greenC = components[1];
blueC = components[2];
CGImageRef sourceImage = self.addedImageView.whiteColorVersion;
CFDataRef theData;
theData = CGDataProviderCopyData(CGImageGetDataProvider(sourceImage));
CFMutableDataRef mutableData = CFDataCreateMutableCopy(0, 0, theData);
UInt8 *pixelData = (UInt8 *) CFDataGetBytePtr(mutableData);
int dataLength = CFDataGetLength(mutableData);
for (int index = 0; index < dataLength; index += 4) {
pixelData[index + 0] = pixelData[index + 0] * redC;
pixelData[index + 1] = pixelData[index + 1] * greenC;
pixelData[index + 2] = pixelData[index + 2] * blueC;
}
CGContextRef context;
context = CGBitmapContextCreate(pixelData,
CGImageGetWidth(sourceImage),
CGImageGetHeight(sourceImage),
8,
CGImageGetBytesPerRow(sourceImage),
CGImageGetColorSpace(sourceImage),
kCGImageAlphaPremultipliedLast);
CGImageRef newCGImage = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newCGImage];
CGContextRelease(context);
CFRelease(theData);
CFRelease(mutableData);
CGImageRelease(newCGImage);
self.addedImageView.image = newImage;
}
這主要是工作,但似乎改變了UIImageView的縱橫比。我不明白這些問題,你能解釋一下嗎? contextRect.size.height = -contextRect.size.height; contextRect.size.height - = 15; – Eric
圖層被垂直翻轉,我需要再次翻轉才能正確顯示。的確,我可以刪除contextRect.size.height - = 15行。 –