我在ipad上尝试一些实验性图像,我试图将每个像素的colordata存储到一个数组中,以提高读取每个像素colordata的性能,
现在我有一个尽可能多地调用我的DrawRect的计时器,在我的DrawRect函数中我有这个:
-(void)drawRect:(CGRect)rect
{
UIGraphicsBeginImageContext(self.frame.size);
[currentImage.image drawInRect:CGRectMake(0, 0, 768, 1004)];
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 0.3);
r_x = r_x + 1;
if (r_x == 768) {
r_x = 1;
r_y = r_y + 1;
}
if (r_y == 1004) {
NSLog(@"color = %@", mijnArray_kleur);
}
CGPoint point2_1 = CGPointMake(r_x, r_y);
GetColor *mycolor = [GetColor alloc];
UIColor *st = [mycolor getPixelColorAtLocation:point2_1];
[mijnArray_kleur addObject:st];
[mycolor release];
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [st CGColor]);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(r_x,r_y,1,1));
}
和getPixelColorAtLocation是一个自定义类,它返回像素的UIDeviceRGBColorSpace值
这需要我大约4个小时(是的,小时:p)来完成一个图像,有什么更快/改进吗?
谢谢!
蒂斯
答案 0 :(得分:4)
[为澄清而复制评论] 根本不是我知道目标C,但在我看来,你的函数迭代超过768 * 1004的值,从而绘制了那么多的矩形。猜测大约60帧/秒,这需要3小时40分钟。我错了吗?