使用目标c将jpeg转换为ios中的位图?

我没有找到任何将Jpeg图像转换为24位BITMAP图像的示例或库。 我已经在android和java中创建了示例,但没有找到任何线索将jpeg转换为ios中的位图。

首先从jpeg图像创建get BGR数组。 创建位图图像标题(所有bmp图像具有相同的标题)。 将Header附加到字节数组,然后将BGR数组添加为B字节,然后是G字节,然后是r字节。 然后最后将字节数组转换为NSDATA。 您将获得BMP图像的数据。 此代码适用于具有512 X 512像素的图像,并且在BMP图像中转换为24位bmp图像。 在代码SIDE = 512。 imgpath将像“users / admin”,destimgpath将像“users / admin / bmpfolder”。 文件名将像1.jpg

-(void) convertJpegToBmp: (NSString *)imgDirPath :(NSString *)destImgPath :(NSString *)fileName { NSString *jpegimagepath = [imgDirPath stringByAppendingPathComponent:fileName]; NSString *fileNameWithoutExtension=[[fileName lastPathComponent] stringByDeletingPathExtension]; NSString *bmpFileName=[fileNameWithoutExtension stringByAppendingString:@".bmp"]; NSString *bmpfilepath=[destImgPath stringByAppendingPathComponent:bmpFileName]; int totalbytesinbitmap=(int) (SIDE * SIDE * 3)+54; Byte bytes[totalbytesinbitmap]; [self writeBitmapHeader:bytes]; UIImage *sourceImage1=[UIImage imageWithContentsOfFile:jpegimagepath]; if(sourceImage1==nil) return; CGImageRef sourceImage = sourceImage1.CGImage; CFDataRef theData; theData = CGDataProviderCopyData(CGImageGetDataProvider(sourceImage)); UInt8 *pixelDataS = (UInt8 *) CFDataGetBytePtr(theData); int dataLength = (int)CFDataGetLength(theData); int k=54; int row=(int) SIDE -1 ; int col=0; int totalbytesinrow=(int) SIDE * 3; for(int i=0;i> 8) & 0x00ff); return count; } -(int) intToDWord :(int) parValue :(Byte *) pixelData :(int) count{ pixelData[count++]= (Byte) (parValue & 0x000000FF); pixelData[count++]= (Byte) ((parValue >> 8) & 0x000000FF); pixelData[count++]= (Byte) ((parValue >> 16) & 0x000000FF); pixelData[count++]= (Byte) ((parValue >> 24) & 0x000000FF); return count; }