私は、OpenGLを使用せずにUIImageのRGBA値を変更するためにピクセルの繰り返しを実行しようとしています。私は、以下のコードを使用して反復パフォーマンスをテストしようとしましたが、非常に不快でした。私は毎秒数千回しか反復することができないようでした。そして、数十万ピクセルのUIImageの場合、これは長すぎるでしょう...誰かがパフォーマンスを向上させる方法や、これらのような操作に通常どのくらいの時間を要するかについての提案はありますか?Core GraphicsのiPhoneでのPIXELの繰り返しパフォーマンスが悪いですか?
-(UIImage*)modifyPixels:(UIImage*)originalImage
{
NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage));
void* pixelBytes = [pixelData bytes];
// Take away the red pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {
NSLog(@" %ith iteration (%i/%i/%i/%i)", i, pixelData[i], pixelData[i+1], pixelData[i+2], pixelData[i+3]);
}
//NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]];
//UIImage* newImage = [UIImage imageWithData:newPixelData];
return originalImage;
}
ここでは、pixelDataが漏洩していることに注意してください。 "Copy"を含むCore Foundation(およびCG拡張機能)関数は、保持されたオブジェクトを返します。 –
よろしくお願いいたします。 – RexOnRoids