Ich wandle eine Benutzeroberfläche in einen vimage_buffer. Der Code sieht wie folgt aus: < /p>
CGImageRef originalImageRef = [image CGImage];
CGColorSpaceRef originalColorSpace = CGImageGetColorSpace(originalImageRef);
CGColorRenderingIntent intent = CGImageGetRenderingIntent(originalImageRef);
vImage_CGImageFormat inputImageFormat =
{
.bitsPerComponent = (uint32_t) CGImageGetBitsPerComponent(originalImageRef),
.bitsPerPixel = (uint32_t) CGImageGetBitsPerComponent(originalImageRef) * (uint32_t)(CGColorSpaceGetNumberOfComponents(originalColorSpace) + (kCGImageAlphaNone != CGImageGetAlphaInfo(originalImageRef))),
.colorSpace = originalColorSpace,
.bitmapInfo = CGImageGetBitmapInfo(originalImageRef),
.version = 0,
.decode = NULL,
.renderingIntent = kCGRenderingIntentDefault
};
vImage_Error error = vImageBuffer_InitWithCGImage(inputImageBuffer, &inputImageFormat, NULL, originalImageRef, kvImageNoFlags);
if (error == kvImageNoError) {
NSLog(@"image to vimage buffer conversion complete");
} else {
NSLog(@"image to vimage buffer conversion failed");
}
< /code>
Aber die resultierenden Pufferfarben sind alle unterschiedlich. Alle Blue Töne verwandeln sich in Gelb und so weiter. Ich habe auch den folgenden Code ausprobiert: < /p>
CGImageRef sourceRef = [image CGImage];
NSUInteger sourceWidth = CGImageGetWidth(sourceRef);
NSUInteger sourceHeight = CGImageGetHeight(sourceRef);
CGDataProviderRef provider = CGImageGetDataProvider(sourceRef);
CFDataRef bitmapData = CGDataProviderCopyData(provider);
unsigned char *sourceData = (unsigned char*)calloc(sourceHeight * sourceWidth * 4, sizeof(unsigned char));
NSUInteger bytesPerPixel = 4;
NSUInteger sourceBytesPerRow = bytesPerPixel * sourceWidth;
CFDataGetBytes(bitmapData, CFRangeMake(0, CFDataGetLength(bitmapData)), sourceData);
vImage_Buffer v_image = {
.data = (void *)sourceData,
.height = sourceHeight,
.width = sourceWidth,
.rowBytes = sourceBytesPerRow
};
CFRelease(bitmapData);
< /code>
Aber dies scheint auch das gleiche Problem zu haben. Jede diesbezüglich wird sehr geschätzt.
CGImage to Vimage Puffer Conversion führt zu falschen Farben ⇐ IOS
-
- Similar Topics
- Replies
- Views
- Last post