2011-08-29 21 views
5

Sto avendo problemi reali con questo. Ho alcuni dati rgb non elaborati, valori da 0 a 255, e voglio visualizzarli come immagine sull'iPhone ma non riesco a scoprire come farlo. Qualcuno può aiutare? Penso che potrei aver bisogno di usare CGImageCreate ma semplicemente non capisco. Ho provato a guardare il riferimento di classe e mi sento abbastanza bloccato.Crea immagine da dati RGB?

Tutto ciò che voglio è un'immagine in scala di grigi 10x10 generata da alcuni calcoli e se c'è un modo semplice per creare un png o qualcosa che sarebbe bello.

+0

puoi aggiungere alcuni dettagli sulla tua piattaforma e quale linguaggio di programmazione? menzioni CGImageCreate, puoi includere un URL? – eon

+1

Che ne dici se dai qualche dettaglio in cui sei bloccato? Per chi non ha visto l'altra domanda: http://stackoverflow.com/questions/7221604/create-image-from-nsarray-data/7221751#7221751 –

risposta

2

Usa CGBitmapContextCreate() per creare una bitmap a base di memoria per voi stessi. Quindi chiama CGBitmapContextGetData() per ottenere un puntatore per il tuo codice di disegno. Quindi CGBitmapContextCreateImage() per creare un CGImageRef.

Spero che questo sia sufficiente per iniziare.

+0

Ok ecco: sto programmando per iOS usando Xcode e obiettivo-c/coco. Mi sto bloccando perché non ho mai usato nessuna delle cose al quarzo o cgimage prima e tutti dicono solo oh usare CGBitmapContextCreate ecc ma ho davvero bisogno di un semplice esempio. –

+0

Inoltre, grazie per il link, ma non riuscivo a farlo funzionare e ho iniziato a ondering come mi avrebbe aiutato. Ho provato a stampare i dati che sono stati creati per il char non firmato che è stato poi utilizzato per fare in modo che un uiimage si aspettasse che fosse dati rgb ma non sono riuscito a farlo visualizzare correttamente. Stava usando il progetto di esempio. Quando l'ho messo da solo, non ha funzionato per caricare correttamente la mia immagine e ho semplicemente rifiutato di NSLog qualsiasi cosa. –

+0

Ho trovato un'altra pagina che sembra buona ma non riesco ancora a ottenerla. Sono abbastanza nuovo a questo. http://stackoverflow.com/questions/1579631/converting-rgb-data-into-a-bitmap-in-objective-c-cocoa –

13

esempio terribilmente primitiva, simile alla suggestione Mats', ma questa versione utilizza un buffer esterno pixel (pixelData):

const size_t Width = 10; 
const size_t Height = 10; 
const size_t Area = Width * Height; 
const size_t ComponentsPerPixel = 4; // rgba 

uint8_t pixelData[Area * ComponentsPerPixel]; 

// fill the pixels with a lovely opaque blue gradient: 
for (size_t i=0; i < Area; ++i) { 
    const size_t offset = i * ComponentsPerPixel; 
    pixelData[offset] = i; 
    pixelData[offset+1] = i; 
    pixelData[offset+2] = i + i; // enhance blue 
    pixelData[offset+3] = UINT8_MAX; // opaque 
} 

// create the bitmap context: 
const size_t BitsPerComponent = 8; 
const size_t BytesPerRow=((BitsPerComponent * Width)/8) * ComponentsPerPixel; 
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef gtx = CGBitmapContextCreate(&pixelData[0], Width, Height, BitsPerComponent, BytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast); 

// create the image: 
CGImageRef toCGImage = CGBitmapContextCreateImage(gtx); 
UIImage * uiimage = [[UIImage alloc] initWithCGImage:toCGImage]; 

NSData * png = UIImagePNGRepresentation(uiimage); 

// remember to cleanup your resources! :) 
+0

che assomiglia a quello che stavo cercando. L'unico problema è che ora ho errori mach-O :( –

+0

non ho avuto problemi con il programma che ho postato .. una nuova domanda, forse? – justin

+0

oh l'ho risolto, grazie! Ho copiato accidentalmente il framework CoreGraphics nella cartella del mio progetto. ! –