CGContext & CGBitmapContextCreateImage Fehler, wie zu beheben?
Habe ich diese Stunden jetzt, und gar nicht wissen, wie Sie zum Debuggen diese Fehler. Vielleicht gibt es ein SO der Experte, der weiß, was Los ist.
- (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);
}
Diese sind die Fehler, die kommen, sobald ich diese Methode aufrufen,
<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
Kann jemand mir BITTE sagen, was Los ist??? Vielen Dank im Voraus.
InformationsquelleAutor Raphael Caixeta | 2010-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
CGBitmapContextCreate gibt NULL zurück, wenn ein Fehler beim erstellen der Kontext, so dass die ultimative Ursache für das "invalid context 0x0" Nachrichten-der Kontext ist buchstäblich auf 0x0 gesetzt (NULL), weil ein Fehler aufgetreten ist. Ich weiß nicht, warum CGBitmapContextCreate ist ein Fehler, aber das ist, wo sollten Sie mit dem Debuggen beginnen. Schauen Sie durch alle Ihre input-Parameter, und vergleichen Sie Ihre Verwendung von CGBitmapContextCreate mit einer von Apple ' s Beispiele wie diese eine.
InformationsquelleAutor samkass
Schreiben Sie die Zeichnung code in
drawRect
. Wenn Sie zeichnen möchten, rufen Sie[self setNeedsDisplay]
fordert Ihre Umsetzung vondrawRect
. Wenn Sie mit dem zeichnen innerhalb eines view-controller, call[self.view setNeedsDisplay]
statt. Zum Beispiel:InformationsquelleAutor Rose Perrone