CGContext & CGBitmapContextCreateImage erreurs, comment réparer?
J'ai fait cela pendant des heures maintenant, et de ne même pas savoir comment déboguer cette erreur. Peut-être il y a une SORTE d'expert qui sait ce qui se passe.
- (void) prepareSubset {
CGSize size = [image size];
float scale = fminf(1.0f, fmaxf(SUBSET_SIZE /cropRect.size.width, SUBSET_SIZE /cropRect.size.height));
CGPoint offset = CGPointMake(-cropRect.origin.x, -cropRect.origin.y);
subsetWidth = cropRect.size.width * scale;
subsetHeight = cropRect.size.height * scale;
subsetBytesPerRow = ((subsetWidth + 0xf) >> 4) << 4;
subsetData = (unsigned char *)malloc(subsetBytesPerRow * subsetHeight);
CGColorSpaceRef grayColorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef ctx = CGBitmapContextCreate(subsetData, subsetWidth, subsetHeight, 8, subsetBytesPerRow, grayColorSpace, kCGImageAlphaNone);
CGColorSpaceRelease(grayColorSpace);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetAllowsAntialiasing(ctx, false);
CGContextTranslateCTM(ctx, 0.0, subsetHeight);
CGContextScaleCTM(ctx, 1.0, -1.0);
UIGraphicsPushContext(ctx);
CGRect rect = CGRectMake(offset.x * scale, offset.y * scale, scale * size.width, scale * size.height);
[image drawInRect:rect];
UIGraphicsPopContext();
CGContextFlush(ctx);
CGImageRef subsetImageRef = CGBitmapContextCreateImage(ctx);
self.subsetImage = [UIImage imageWithCGImage:subsetImageRef];
CGImageRelease(subsetImageRef);
CGContextRelease(ctx);
}
Ce sont les erreurs qui surviennent une fois que j'ai appeler cette méthode
<Error>: CGContextSetInterpolationQuality: invalid context 0x0
<Error>: CGContextSetAllowsAntialiasing: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextSetBlendMode: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextDrawImage: invalid context 0x0
<Error>: CGContextRestoreGState: invalid context 0x0
<Error>: CGContextFlush: invalid context 0x0
<Error>: CGBitmapContextCreateImage: invalid context 0x0
Quelqu'un peut-il me dire ce qu'il se passe? Merci à l'avance.
OriginalL'auteur Raphael Caixeta | 2010-08-25
Vous devez vous connecter pour publier un commentaire.
CGBitmapContextCreate retourne NULL si il y a une erreur de création du contexte, de sorte que c'est la cause ultime de la "non valide contexte 0x0" messages-- le contexte est littéralement mis à 0 x 0 (NULL) en raison d'une erreur. Je ne sais pas pourquoi CGBitmapContextCreate est d'avoir d'erreur, mais c'est là que vous devez démarrer le débogage. Vérifiez vos paramètres d'entrée, et de comparer votre utilisation de CGBitmapContextCreate avec l'une des Apple des exemples tels que cette une.
OriginalL'auteur samkass
Écrire le code de dessin dans
drawRect
. Si vous souhaitez dessiner, appel[self setNeedsDisplay]
, qui appelle la mise en œuvre dedrawRect
. Si vous êtes dessin dans un view controller, appel[self.view setNeedsDisplay]
à la place. Par exemple:OriginalL'auteur Rose Perrone