iPhone開發(fā)應(yīng)用中如何使BMP讀取交顯示解決方法
iPhone開發(fā)應(yīng)用中如何使BMP讀取交顯示解決方法是本文要介紹的內(nèi)容,主要是來(lái)學(xué)習(xí)在iphone開發(fā)中,BMP顯示的問(wèn)題,本文介紹了兩種解決方法。內(nèi)容不多,主要是基于代碼來(lái)實(shí)現(xiàn)內(nèi)容。雖然在iphone下很少使用bmp格式的圖片,但在此要介紹兩種方法,讓對(duì)bmp情有獨(dú)鐘的人,了確心中愿望。來(lái) 看本文具體詳解。
- #define BMP_SIZE 320*480*3
- #define BMP_HEADER_LENGTH 54
- //方法一:
- CGImageRef GetImageData()
- {
- unsigned char* pData=NULL;
- int i = 0;
- int bitsPerComponent = 8;
- int bitsPerPixel = 24;
- int bytesPerRow = 3 * SCREEN_METRIC_WIDTH;
- NSInteger myLCDDataLength =
- SCREEN_METRIC_WIDTH * SCREEN_METRIC_HEIGHT * 2;
- CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
- CGBitmapInfo bmpInof = kCGBitmapByteOrderDefault;
- CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
- CGDataProviderRef provider = nil;
- void*pBuffer = malloc(BMP_SIZE + BMP_HEADER_LENGTH);
- for(pData = pBuffer, i = 0; i < SCREEN_METRIC_WIDTH * SCREEN_METRIC_HEIGHT; ++i)
- {
- *pData++ = 0xFF; //R
- *pData++ = 0x0; //G
- *pData++ = 0x0; //B
- }
- provider = CGDataProviderCreateWithData(NULL, pBuffer, myLCDDataLength, NULL);
- return CGImageCreate(SCREEN_METRIC_WIDTH,SCREEN_METRIC_HEIGHT,
- bitsPerComponent,
- bitsPerPixel,
- bytesPerRow,
- colorSpaceRef,
- bmpInof,
- provider,
- NULL,
- NO,
- renderingIntent);
- }
- void GUI_DrawBMP()
- {
- CGImageRef m_cgImage = GetImageData();
- pUIImage = [ [ UIImage alloc] initWithCGImage:m_cgImage];
- [pUIImage drawAtPoint:CGPointMake(0.0f,0.0f)];
- [pUIImage dealloc];
- }
- //方法二:
- const char* const g_pszFilePath = "/example.bmp";
- FILE * pFile = fopen(g_pszFilePath, "rb");
- if(NULL != pFile)
- {
- void*pBuffer = malloc(BMP_SIZE + BMP_HEADER_LENGTH);
- if (NULL != pBuffer)
- {
- fseek(pFile , 0, SEEK_SET);
- fread(pBuffer, 1, 54, pFile);
- fclose(pFile);
- memset(pBuffer + BMP_HEADER_LENGTH, BMP_SIZE);
- NSData* pNSData = [ [NSData alloc] initWithBytes:pBuffer
- length: BMP_SIZE + BMP_HEADER_LENGTH];
- UIImage* pUIImage = [ [ UIImage alloc] initWithData:myNSData];
- [pUIImage drawAtPoint:CGPointMake(0.0f,0.0f)];
- [pNSData dealloc];
- free(pBuffer);
- }
- }
小結(jié):iPhone開發(fā)應(yīng)用中如何使BMP讀取交顯示解決方法的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)鞥對(duì)你有所幫助!