Есть ли у кого-нибудь еще такая проблема? ObjectAlloc поднимается в результате CGBitmapContextCreateImage. Программное обеспечение Apple не полностью освобождает объект allococ?iPhone - Несколько вызовов CGBitmapContextCreateImage - ObjectAlloc climbing
Я изменяю размер изображения 12 раз в секунду с помощью NSTimer. Во время изменения размера изображения я также добавляю фотошоп, например эффект гауссова размытия, включая интерполяцию качества.
После использования инструментов он не обнаруживает утечек памяти, но мой объектalloc просто продолжает подниматься. Он указывает прямо на CGBitmapContextCreateImage.
CGBitmapContextCreateImage> create_ bitmap_ data_provide> таНос
Любое знает решение? или даже возможные идеи?
Зов в NSTimer
NSString * fileLocation = [[NSBundle mainBundle] pathForResource:imgMain ofType:@"jpg"];
NSData * imageData = [NSData dataWithContentsOfFile:fileLocation];
UIImage * blurMe = [UIImage imageWithData:imageData];
CGRect rect = CGRectMake(0, 0, round(blurMe.size.width /dblBlurLevel), round(blurMe.size.width /dblBlurLevel));
UIImage * imageShrink = [self resizedImage: blurMe : rect : 3.0];
CGRect rect2 = CGRectMake(0, 0, blurMe.size.width , blurMe.size.width);
UIImage * imageReize = [self resizedImage: imageShrink : rect2 : 3.0];
imgView.image = imageReize;
Изменить размер Функция
-(UIImage *) resizedImage:(UIImage *)inImage : (CGRect)thumbRect : (double)interpolationQuality
{
CGImageRef imageRef = [inImage CGImage];
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
if (alphaInfo == kCGImageAlphaNone)
alphaInfo = kCGImageAlphaNoneSkipLast;
// Build a bitmap context that's the size of the thumbRect
CGContextRef bitmap = CGBitmapContextCreate(
NULL,
thumbRect.size.width,
thumbRect.size.height,
CGImageGetBitsPerComponent(imageRef),
4 * thumbRect.size.width,
CGImageGetColorSpace(imageRef),
alphaInfo
);
// Draw into the context, this scales the image
CGContextSetInterpolationQuality(bitmap, interpolationQuality);
CGContextDrawImage(bitmap, thumbRect, imageRef);
// Get an image from the context and a UIImage
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage* result = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap); // ok if NULL
CGImageRelease(ref);
return [result autorelease];
}
Вы уверены, что CGContextSetInterpolationQuality делает гауссовское размытие? – mahboudz
Можете ли вы показать, как вы называете этот метод и что вы делаете с возвращенным изображением? – coneybeare
Да, способ, которым я пользуюсь этой функцией, отлично подходит для получения фотошопа, такого как Gaussian Blur. Я передаю нормальный UIImage в этот скрипт и изменяю размер изображения до очень небольшого размера и добавляю к нему некоторый InterpolationQuality. Это делает новое очень маленькое изображение размытым. Затем я снова вызываю сценарий изменения размера и передаю его в сжатое и размытое изображение, которое я только что создал. Когда вы увеличиваете небольшое размытое изображение, оно возвращается с идеальным размытием Gaussian. Я искал все, чтобы найти простой способ добавить гауссовское размытие, но я не нашел функционала, который добавляет его так хорошо, как это. – bbullis21