iPhone開發應用中如何使BMP讀取交顯示解決方法
作者:佚名
iPhone開發應用中如何使BMP讀取交顯示解決方法是本文要介紹的內容,主要是來學習在iphone開發中,BMP顯示的問題,本文介紹了兩種解決方法。內容不多,主要是基于代碼來實現內容。
iPhone開發應用中如何使BMP讀取交顯示解決方法是本文要介紹的內容,主要是來學習在iphone開發中,BMP顯示的問題,本文介紹了兩種解決方法。內容不多,主要是基于代碼來實現內容。雖然在iphone下很少使用bmp格式的圖片,但在此要介紹兩種方法,讓對bmp情有獨鐘的人,了確心中愿望。來 看本文具體詳解。
- #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);
- }
- }
小結:iPhone開發應用中如何使BMP讀取交顯示解決方法的內容介紹完了,希望通過本文的學習鞥對你有所幫助!
責任編輯:zhaolei
來源:
網絡轉載