J'essaye de créer une nouvelle image à partir des données brutes dans unsigned char *. J'ai les bits par pixel à partir des données stockées. J'ai essayé de convertir des données brutes en NSData, mais l'image de résultat était nulle,
char non signé * bitmap = myData;
NSUInteger myImageDataLength = strlen ((const char *) bitmap);
NSData * d = [NSData dataWithBytes: longueur de bitmap: myImageDataLength];
- Comment sélectionner une partie d'une image, recadrer et l'save en utilisant Swift?
- changer la couleur de l'image dans l'iphone sdk
- Comment append une image au centre de navigationBar dans Objective-C?
- Sauvegarde des données d'image originales avec des métadonnées modifiées (pas de ré-enencoding) sur iOS
- Téléchargement d'image RestKit
imgView.image = [UIImage imageWithData: d];
Puis j'ai essayé d'utiliser le context pour créer une image comme suit:
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); int width = mWidth; int height = mHeight; size_t bpp = mBpp; size_t bpc = 8; size_t bpr = (width * 4); CGContextRef context = CGBitmapContextCreate(bitmap, width, height, 8, bpr, colorspace, kCGImageAlphaNone); CGImageRef cgImage = nil; if (context != nil) { cgImage = CGBitmapContextCreateImage (context); CGContextRelease(context); } CGColorSpaceRelease(colorspace); UIImage *newImage = [UIImage imageWithCGImage:cgImage];
Je reçois un message d'erreur comme <Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component color space; kCGImageAlphaNone; 64 bytes/row.
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component color space; kCGImageAlphaNone; 64 bytes/row.
J'ai essayé de le résoudre en définissant de nombreuses valeurs, mais ne peux pas find de résultat. J'ai cherché sur internet pour find cette solution mais tous les autres créent une image à partir d'images existantes pour get les valeurs de bits par composants et tout ça … Comment puis-je créer une image à partir de ces données ???
Image originale:
Image résultante:
L'image résultante devrait être déformée. (Warped même que fatBooth et autre application)
Le code suivant crée une instance UIImage
partir de données de pixels brutes, en supposant que vous avez:
Le UIImage
résultant est assigné à la variable uiImage
.
CGDataProviderRef provider = CGDataProviderCreateWithData( NULL, pixelData, imageHeight * scanWidth, NULL); CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight, 8, bytesPerPixel * 8, scanWidth, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); UIImage *uiImage = [UIImage imageWithCGImage:imageRef]; CGColorSpaceRelease(colorSpaceRef); CGImageRelease(imageRef);
Essaye ça :-
CGRect screenBounds = [[UIScreen mainScreen] bounds]; GLuint *buffer; //point the buffer to memory location code that here accordingly int backingWidth = screenBounds.size.width; int backingHeight =screenBounds.size.height; NSInteger myDataLength = backingWidth * backingHeight * 4; CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, myDataLength, releaseScreenshotData); const int bitsPerComponent = 8; const int bitsPerPixel = 4 * bitsPerComponent; const int bytesPerRow = 4 * backingWidth; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; CGImageRef imageRef = CGImageCreate(backingWidth,backingHeight, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); CGColorSpaceRelease(colorSpaceRef); CGDataProviderRelease(provider); UIImage *myImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); [uiimageviewobject setImage:myImage]; [self addSubview:uiimageviewobject];