我正在使用一個API,它給了我一個圖像,如下例所示。我不確定如何將這些數值轉換爲圖像。我以前沒見過這個。來自陣列的UIImage
有誰知道我可以如何將下面的值數組放入UIImage中?
[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,...]
我正在使用一個API,它給了我一個圖像,如下例所示。我不確定如何將這些數值轉換爲圖像。我以前沒見過這個。來自陣列的UIImage
有誰知道我可以如何將下面的值數組放入UIImage中?
[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,...]
這看起來像直像素緩衝區的數據,所以你將不得不猜測格式(可能是,RGBA?)和圖像尺寸(希望它的固定/猜測的/納入格式)。如果你猜對了,你應該可以用CGDataProviderCreateWithData創建一個CIImage;
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, bufferLength, NULL);
//a reasonable guess
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
int bitsPerComponent = 8;
int bitsPerPixel = 32;
int bytesPerRow = 4 * width;
CGImageRef imageRef = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, kCGBitmapByteOrderDefault, provider, NULL, NO, kCGRenderingIntentDefault);
UIImage *newUIImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
我認爲你是對的。我試圖創建一個方法,我通過'NSArray'和圖像的大小。然後該方法返回'UIImage'。我不知道如何處理'NSArray'。你能告訴我如何將它與你發佈的代碼一起使用嗎? – simonbs 2012-04-16 10:46:45
下面是一個上面的緩衝區創建包括一個非常完整的例子:http://stackoverflow.com/questions/1579631/converting-rgb-data-into-a-bitmap-in-objective-c-cocoa – 2012-04-17 02:21:50
如果是公共API,則提及該API名稱,以便有人給你正確的方向。或者提及API發送圖像時使用哪種編碼方法。 – AJPatel 2012-04-16 05:52:51
很抱歉,我無法提供更多信息,但該API不公開。我的希望是有人看到過以這種方式表現出來的形象。 – simonbs 2012-04-16 05:56:04
它看起來像你在響應中獲取NSData,你有沒有嘗試 - [UIImage imageWithData:imageData]; – rishi 2012-04-16 06:02:05