使用C#实现byte[]转UIImage、Image

不啰嗦,直接上代码

byte[]转UIImage

在Xamarin.iOS项目中用。

public UIImage bytesToUIImage(byte[] data){
    if (data == null) return null;

    GCHandle hObject = GCHandle.Alloc(data, GCHandleType.Pinned);
    IntPtr pObject = hObject.AddrOfPinnedObject();
    NSData nsdata = NSData.FromBytes(pObject, (System.nuint)data.Length);
    UIImage image = UIImage.LoadFromData(nsdata);

    if (hObject.IsAllocated)
        hObject.Free();
        return image;
    } catch (Exception e) {

    }
    return null;
}

byte[]转Image

在Xamarin.Form中用。

public Image bytesToImage(byte[] data){
    var image = new Image();
    image.Source = ImageSource.FromStream(() => new MemoryStream(data));
    return image;
}

Stream转byte[]

这个方法哪都能用,所以顺便贴出来。

public byte[] StreamTobytes(Stream stream){
    byte[] result;
    using (var memoryStream = new System.IO.MemoryStream()) {
        stream.CopyTo(memoryStream);
        result = memoryStream.ToArray();
    }
    return result;
}

你可能感兴趣的:(使用C#实现byte[]转UIImage、Image)