2012-06-12 2 views
0

Как можно преобразовать данные изображения в RLE формата, совместимые изображений IOS (который поддерживается IOS)Преобразования RLE к UIImageView.Image в IOS

ImgView.Image = UIImage.LoadFromData(_data) // _data contains of size 1350124 

_data содержит массив байт изображения в формате RLE. а присваивается ImgView.Image получает

null. поэтому изображение не отображается в UIImageView.

как сделать _data формата, совместимый с UIImage

+1

Вам нужно будет вручную декодировать его и конвертировать его в поддерживаемый формат. RLE - это общая техника, а не конкретный формат изображения. Вы можете просматривать данные этого изображения с помощью любого вида просмотра изображений? Если вы сможете, то сможете определить, в каком именно формате он находится, и это поможет вам понять, как его преобразовать. – Jason

ответ

2

после реализации RLE алгоритм только я ниже кода несколько строк кода долгой борьбы, наконец, я получил это решение

Byte _imgData = GetRawData(_imgPath); // this method get the byte array of size ([131072]) 

NSData _data = NSData.FromArray(_imgData); 

ImgView.Image = UIImage.LoadFromData(_data) 
int rawWidth = PixelData.ImageWidth; 
int rawHeight = PixelData.ImageHeight; 
float[] _rawSize = new float[rawWidth * rawHeight * 4]; 
for (int i =0; i < rawWidth * rawHeight; ++i) { 
       _rawSize [4 * i] = (float)(1.0/255.0); 
       _rawSize [4 * i + 1] = (float)(1.0/255.0); 
       _rawSize [4 * i + 2] = (float)(1.0/255.0); 
       _rawSize [4 * i + 3] = 255; 
      } 
int bitsPerComponant = 8; 
int bitsPerPixel = 32; 
int bytesPerRow = 4 * rawWidth; 


CGDataProvider _provider = new CGDataProvider (_imgData, 0, _imgData.Length); 
CGColorSpace colorSpace = CGColorSpace.CreateDeviceRGB(); 

CGImage cg = new CGImage (
       rawWidth, 
       rawHeight, 
       bitsPerComponant, 
       bitsPerPixel, 
       bytesPerRow, 
       colorSpace, 
       CGBitmapFlags.ByteOrderDefault, 
       _provider, 
       null, 
       true, 
       CGColorRenderingIntent.Default 
      ); 
ImgView.Image = UIImage.FromImage (cg); 
Смежные вопросы