Hallo,
Versuche seit Tagen auf einen NSImage CIfilter anzusetzen. Leider kriege ich da immer Leaks.
Eigentlich eine simple Sache die an sich funktioniert aber es leakt und leakt…..
Es sieht etwa so aus :
Alles anzeigen
Habe es noch weiter vereinfacht um die Leak-Stelle einzugrenzen.
Alles anzeigen
Es liegt definitiv an der CIImage zu NSImage Umwandlung.
Ist das eine geistige Umnachtung meinerseits oder reite ich einen toten Pferd?
Werde für jeden Rat dankbar.
marek.
Versuche seit Tagen auf einen NSImage CIfilter anzusetzen. Leider kriege ich da immer Leaks.
Eigentlich eine simple Sache die an sich funktioniert aber es leakt und leakt…..
Es sieht etwa so aus :
Quellcode
- -(NSImage*)setBlurforImage:(NSImage*)image blur:(CGFloat)blur {
- // NSImage => CIImage
- CIImage * inputImage = [[CIImage alloc] initWithData:[image TIFFRepresentation]];
- NSSize imageSize = [inputImage extent].size;
- // 2. CIFilter
- CIFilter * filter = [CIFilter filterWithName:@"CIGaussianBlur"];
- [filter setValue:inputImage forKey:kCIInputImageKey];
- [filter setValue:@(blur) forKey:kCIInputRadiusKey];
- CIImage * outputImage = [filter valueForKey:kCIOutputImageKey];
- // CIImage => NSImage
- NSImage * finalImage = [[NSImage alloc] initWithSize:imageSize];
- [finalImage lockFocus];
- [outputImage drawAtPoint:NSZeroPoint fromRect:(NSRect){NSZeroPoint, imageSize} operation:NSCompositeSourceOver fraction:1];// LEACK !!!!!
- [finalImage unlockFocus];
- return finalImage;
- }
Habe es noch weiter vereinfacht um die Leak-Stelle einzugrenzen.
Quellcode
- -(NSImage*)setBlurforImage:(NSImage*)image blur:(CGFloat)blur {
- // NSImage => CIImage
- CIImage * inputImage = [[CIImage alloc] initWithData:[image TIFFRepresentation]];
- NSSize imageSize = [inputImage extent].size;
- // 2. CIFilter
- // CIFilter * filter = [CIFilter filterWithName:@"CIGaussianBlur"];
- // [filter setValue:inputImage forKey:kCIInputImageKey];
- // [filter setValue:@(blur) forKey:kCIInputRadiusKey];
- // CIImage * outputImage = [filter valueForKey:kCIOutputImageKey];
- // CIImage => NSImage
- NSImage * finalImage = [[NSImage alloc] initWithSize:imageSize];
- [finalImage lockFocus];
- [inputImage drawAtPoint:NSZeroPoint fromRect:(NSRect){NSZeroPoint, imageSize} operation:NSCompositeSourceOver fraction:1];// LEACK !!!!!
- [finalImage unlockFocus];
- return finalImage;
- }
Es liegt definitiv an der CIImage zu NSImage Umwandlung.
Ist das eine geistige Umnachtung meinerseits oder reite ich einen toten Pferd?
Werde für jeden Rat dankbar.
marek.