0
我目前使用下面的函數來改變PNG圖像的顏色,通過顏色滑塊設置顏色,所以當滑動顏色時,一切正常,並得到相應的結果圖像相應地,我是滑動時滑塊的性能只會有問題,它會滯後以及圖像顏色更新,需要幫助才能使過程平滑。Objective-C改變圖像顏色性能
- (UIImage*)imageWithImage:(UIImage *)sourceImage fixedHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha{
CGSize imageSize = [sourceImage size];
UIGraphicsBeginImageContext(imageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, sourceImage.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGRect rect = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height);
CGContextSetBlendMode(context, kCGBlendModeNormal);
CGContextDrawImage(context, rect, sourceImage.CGImage);
CGContextSetBlendMode(context, kCGBlendModeColor);
[[UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha] setFill];
CGContextFillRect(context, rect);
CGContextSetBlendMode(context, kCGBlendModeDestinationIn);
CGContextDrawImage(context, rect, sourceImage.CGImage);
CGContextFlush(context);
UIImage *editedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return editedImage;
}
謝謝DANH,在這條線 CGContextFillRect應用程序崩潰(上下文,rect); 說應該在UI線程上實現,確實在主線程上添加了這條線來調度仍然沒有運氣 – Development
啊 - 對不起。不要獲取當前的上下文。創建一個。將在幾分鐘後發佈修改。 – danh
對不起 - 我只是剛剛仔細閱讀你的原代碼。你創建了一個CGContext,並且我認爲我已經找到了所有需要運行的主要變化(關閉主要的UI操作都是禁止的)。 – danh