CGImage载入的图片,查看bitmap详细信息的一段好用代码

来源:互联网 发布:与运算java 编辑:程序博客网 时间:2024/05/19 14:18

http://blog.csdn.net/misol/article/details/7739127


在IOS中,载入一张图片到CGImage后,如果想查看图片的信息,这里有一段比较好的代码可以帮助你,其他的信息要显示可以参考苹果的API自己设置!


[cpp] view plaincopyprint?
  1. -(void)imageDump:(NSString*)file  
  2. {  
  3.     UIImage* image = [UIImage imageNamed:file];  
  4.     CGImageRef cgimage = image.CGImage;  
  5.   
  6.     size_t width  = CGImageGetWidth(cgimage);  
  7.     size_t height = CGImageGetHeight(cgimage);  
  8.   
  9.     size_t bpr = CGImageGetBytesPerRow(cgimage);  
  10.     size_t bpp = CGImageGetBitsPerPixel(cgimage);  
  11.     size_t bpc = CGImageGetBitsPerComponent(cgimage);  
  12.     size_t bytes_per_pixel = bpp / bpc;  
  13.   
  14.     CGBitmapInfo info = CGImageGetBitmapInfo(cgimage);  
  15.   
  16.     NSLog(  
  17.         @"\n"  
  18.         "===== %@ =====\n"  
  19.         "CGImageGetHeight: %d\n"  
  20.         "CGImageGetWidth:  %d\n"  
  21.         "CGImageGetColorSpace: %@\n"  
  22.         "CGImageGetBitsPerPixel:     %d\n"  
  23.         "CGImageGetBitsPerComponent: %d\n"  
  24.         "CGImageGetBytesPerRow:      %d\n"  
  25.         "CGImageGetBitmapInfo: 0x%.8X\n"  
  26.         "  kCGBitmapAlphaInfoMask     = %s\n"  
  27.         "  kCGBitmapFloatComponents   = %s\n"  
  28.         "  kCGBitmapByteOrderMask     = %s\n"  
  29.         "  kCGBitmapByteOrderDefault  = %s\n"  
  30.         "  kCGBitmapByteOrder16Little = %s\n"  
  31.         "  kCGBitmapByteOrder32Little = %s\n"  
  32.         "  kCGBitmapByteOrder16Big    = %s\n"  
  33.         "  kCGBitmapByteOrder32Big    = %s\n",  
  34.         file,  
  35.         (int)width,  
  36.         (int)height,  
  37.         CGImageGetColorSpace(cgimage),  
  38.         (int)bpp,  
  39.         (int)bpc,  
  40.         (int)bpr,  
  41.         (unsigned)info,  
  42.         (info & kCGBitmapAlphaInfoMask)     ? "YES" : "NO",  
  43.         (info & kCGBitmapFloatComponents)   ? "YES" : "NO",  
  44.         (info & kCGBitmapByteOrderMask)     ? "YES" : "NO",  
  45.         (info & kCGBitmapByteOrderDefault)  ? "YES" : "NO",  
  46.         (info & kCGBitmapByteOrder16Little) ? "YES" : "NO",  
  47.         (info & kCGBitmapByteOrder32Little) ? "YES" : "NO",  
  48.         (info & kCGBitmapByteOrder16Big)    ? "YES" : "NO",  
  49.         (info & kCGBitmapByteOrder32Big)    ? "YES" : "NO"  
  50.     );  
  51.   
  52.     CGDataProviderRef provider = CGImageGetDataProvider(cgimage);  
  53.     NSData* data = (id)CGDataProviderCopyData(provider);  
  54.     [data autorelease];  
  55.     const uint8_t* bytes = [data bytes];  
  56.   
  57.     printf("Pixel Data:\n");  
  58.     for(size_t row = 0; row < height; row++)  
  59.     {  
  60.         for(size_t col = 0; col < width; col++)  
  61.         {  
  62.             const uint8_t* pixel =  
  63.                 &bytes[row * bpr + col * bytes_per_pixel];  
  64.   
  65.             printf("(");  
  66.             for(size_t x = 0; x < bytes_per_pixel; x++)  
  67.             {  
  68.                 printf("%.2X", pixel[x]);  
  69.                 if( x < bytes_per_pixel - 1 )  
  70.                     printf(",");  
  71.             }  
  72.   
  73.             printf(")");  
  74.             if( col < width - 1 )  
  75.                 printf(", ");  
  76.         }  
  77.   
  78.         printf("\n");  
  79.     }  
  80. }  


效果如下:::

[cpp] view plaincopyprint?
  1. ===== a.png =====  
  2. CGImageGetHeight: 5  
  3. CGImageGetWidth:  3  
  4. CGImageGetColorSpace: <CGColorSpace 0x4d08ff0> (kCGColorSpaceDeviceRGB)  
  5. CGImageGetBitsPerPixel:     32  
  6. CGImageGetBitsPerComponent: 8  
  7. CGImageGetBytesPerRow:      20  
  8. CGImageGetBitmapInfo: 0x00000003  
  9.   kCGBitmapAlphaInfoMask     = YES  
  10.   kCGBitmapFloatComponents   = NO  
  11.   kCGBitmapByteOrderMask     = NO  
  12.   kCGBitmapByteOrderDefault  = NO  
  13.   kCGBitmapByteOrder16Little = NO  
  14.   kCGBitmapByteOrder32Little = NO  
  15.   kCGBitmapByteOrder16Big    = NO  
  16.   kCGBitmapByteOrder32Big    = NO  
  17. Pixel Data:  
  18. (00,00,00,FF), (FF,FF,FF,FF), (FF,00,00,FF), (00,FF,00,FF), (00,00,FF,FF)  
  19. (00,00,00,FF), (FF,FF,FF,FF), (FF,00,00,FF), (00,FF,00,FF), (00,00,FF,FF)  
  20. (FF,FF,FF,00), (FF,FF,FF,00), (FF,FF,FF,00), (FF,FF,FF,00), (FF,FF,FF,00)  
  21.   
  22.   
  23. ===== b.png =====  
  24. CGImageGetHeight: 5  
  25. CGImageGetWidth:  3  
  26. CGImageGetColorSpace: <CGColorSpace 0x4d08ff0> (kCGColorSpaceDeviceRGB)  
  27. CGImageGetBitsPerPixel:     24  
  28. CGImageGetBitsPerComponent: 8  
  29. CGImageGetBytesPerRow:      15  
  30. CGImageGetBitmapInfo: 0x00000000  
  31.   kCGBitmapAlphaInfoMask     = NO  
  32.   kCGBitmapFloatComponents   = NO  
  33.   kCGBitmapByteOrderMask     = NO  
  34.   kCGBitmapByteOrderDefault  = NO  
  35.   kCGBitmapByteOrder16Little = NO  
  36.   kCGBitmapByteOrder32Little = NO  
  37.   kCGBitmapByteOrder16Big    = NO  
  38.   kCGBitmapByteOrder32Big    = NO  
  39. Pixel Data:  
  40. (00,00,00), (FF,FF,FF), (FF,00,00), (00,FF,00), (00,00,FF)  
  41. (00,00,00), (FF,FF,FF), (FF,00,00), (00,FF,00), (00,00,FF)  
  42. (00,00,00), (FF,FF,FF), (FF,00,00), (00,FF,00), (00,00,FF) 
0 0
原创粉丝点击