我怎样才能改变图像的颜色和他们迅速复合的iPhone?

我有多个图像(UIImage的NSData的的*)。 原因是,我不能在内存中持有过多的UIImages。
我想改变自己的颜色和快速合并它们没有在任何时间创造了太多的UIImages一次。
我总新手到二维图纸(只是复制和粘贴别人的代码做什么,我需要),并有很难搞清楚如何做到这一点。
我怀疑在石英“层”的概念可以加快我在做什么。

下面是我用它来改变颜色,并结合图像的代码。 请注意,我创建的UIImage每个步骤(改色,结合图像)的多张图片,并且它是缓慢的..

- (UIImage*) changeColor: (UIColor*) aColor { if(aColor == nil) return self; UIGraphicsBeginImageContext(self.size); CGRect contextRect; contextRect.origin.x = 0.0f; contextRect.origin.y = 0.0f; contextRect.size = self.size; // Retrieve source image and begin image context CGSize itemImageSize = self.size; CGPoint itemImagePosition; itemImagePosition.x = ceilf((contextRect.size.width - itemImageSize.width) / 2); itemImagePosition.y = ceilf((contextRect.size.height - itemImageSize.height) ); UIGraphicsBeginImageContext(contextRect.size); CGContextRef c = UIGraphicsGetCurrentContext(); // Setup shadow // Setup transparency layer and clip to mask CGContextBeginTransparencyLayer(c, NULL); CGContextScaleCTM(c, 1.0, -1.0); CGContextClipToMask(c, CGRectMake(itemImagePosition.x, -itemImagePosition.y, itemImageSize.width, -itemImageSize.height), [self CGImage]); // Fill and end the transparency layer CGColorRef colorRef = aColor.CGColor; const CGFloat *components = CGColorGetComponents(colorRef); int red = components[0] * 255; int green = components[1] * 255; int blue = components[2] * 255; CGContextSetRGBFillColor(c, red, green, blue, 1); contextRect.size.height = -contextRect.size.height; contextRect.size.height -= 15; CGContextFillRect(c, contextRect); CGContextEndTransparencyLayer(c); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; }

合并图像

- (UIImage*) combineImage: (UIImage*) aImage { UIGraphicsBeginImageContext(self.size); [self drawInRect: CGRectMake(0, 0, self.size.width, self.size.height)]; [aImage drawInRect: CGRectMake(0, 0, self.size.width, self.size.height)]; UIImage* combinedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return combinedImage; }

//一次绘制多个图像,以加快一点。 我控制向量的大小来降低对存储器的要求

+ (UIImage*) combineImageVector: (const std::vector<UIImage*>&) imageVector { if(imageVector.size() == 0 ) return nil; CGSize size = (imageVector.at(0)).size; CGRect rect = CGRectMake(0,0, size.width, size.height); UIGraphicsBeginImageContext(size); for(unsigned int i=0; i < imageVector.size(); ++i) { UIImage* aImage = imageVector.at(i); [aImage drawInRect: rect]; } UIImage* combinedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return combinedImage; }

--------------解决方案-------------

我使用的代码从该页面http://discussions.info.apple.com/message.jspa?messageID=8103870。 它的工作对我来说(我的图片)。 你可以试试它的修改您的需求。

分类:iphone 时间:2015-03-15 人气:3
本文关键词: iphone,层的UIImage
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.702 (s). 10 q(s)