Want to convert byte[] to Imagesource
here is my code for convert to byte
public object BufferFromImage(System.Windows.Media.ImageSource imageSource)
{
if (imageSource != null)
{
var image = (BitmapSource)imageSource;
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
using (var ms = new MemoryStream())
{
encoder.Save(ms);
return ms.ToArray();
}
}
else
{
return DBNull.Value;
}
}
code for byte[] to Imagesource
public ImageSource ByteToImage(byte[] imageData)
{
BitmapImage biImg = new BitmapImage();
MemoryStream ms = new MemoryStream(imageData);
biImg.BeginInit();
biImg.StreamSource = ms;
biImg.EndInit();
ImageSource imgSrc = biImg as ImageSource;
return imgSrc;
}
This is giving me this error:
An unhandled exception of type 'System.NotSupportedException' occurred
in PresentationCore.dll
Additional information: No imaging component suitable to complete this
operation was found.
What is causing this and how can I fix it?
Looks like you can save it to a MemoryStream then convert the MemoryStream to a byte array.try to this
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray
}
//second
public byte[] imgToByteArray(Image img)
{
using (MemoryStream mStream = new MemoryStream())
{
img.Save(mStream, img.RawFormat);
return mStream.ToArray();
}
}
Related
I'm reading data from a blob in MySQL in Base64 String.
I want to convert this to a BitmapImage.
I've tried many ways, but without success.
Here is an example:
public static BitmapImage Base64ToBitmapImage(this string base64String)
{
byte[] binaryData = Convert.FromBase64String(base64String);
BitmapImage img = new BitmapImage();
img.BeginInit();
img.StreamSource = new MemoryStream(binaryData);
img.EndInit();
return img;
}
One example of blob:
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j/QyhtJbt2697bbbbrrpJtx0d3eF5yU6AmwTWJyUzXci8rRzVsiVzCveJKIOWSgXgqSJ0kQ8SnECSFgcOnTItnvkf3z36aefZlH8Jou7DWcRerQIlKNHj951113vf//7DffIZAyJofyrvzTnOYQRzDNJLgtiSLL+7ne/6yrh6jk8kv6lHwLI6AVKMyaLqqtl9lWr0iePY2PpS5dIDqfEnDiiXvxVqZp+MVrhRg8nguiJf0k/ODRok7388ssuAj//+c+Fzsre9B/tXLFihQNG9qY/huLlFGdeVA8cOPDxj3/8Xe96l172mg1D8SW6acFakJaeK+aNJHpQCFVcIDM89NBDSKJ3W3snw1hFaWmNmDpoZDwjnbdy+rZt29atWxev6DHhCThHkgJa4vKSoziR/mst9PGK8/zzz+Pmz3/+syRsw1HY9mptTj+EC2KUaHDoGogbLcLF8C984Qs333yzFkMMxBCezpGYasydpJPBNl5W+elPf/qlL32Jbczo6OzesGHD7t27ZXAGsFPSs91iXQLalRqJrVmz5u/efpO8j7nly9IPWibTV/j1tn0O71MyouHpg3rpseox+5lfgqnzEVPpn9tVHo1trE+ZTSrznrB//36UuJ7J0lpcHIRypCYTQqp40csOFbtHL9dTnhXOHhcHd1qjvva1r9HfDI4rW42kRps15onKuWA+SaK9kk4vvPDC5z//+fjcYXBoZPPmzZjQy35EMhUrwBggg06I4cfS/29P+rc0rL3++utFmEsHdo2yA+xiezk2bGtrczV5AZSYx5wI4FCR7fBwbMSr26FDB379yyf6jx4+cuRIbBehIL5xQJI85TnE8HBLasncEyRxvTpJcPZIA7Syt+677z7yAoh6dCPG0pwk5TnyNG8ksZlm8hu9nbqf+9znvOLR+LXX97inMpLB1kKSOi+QobpGJim1BHO9q1YjzDxaTItpXiZsqnjz4NPwV5QezQPk6YAhsJA6sh0w+OBTWpkhvZzVF8oz6QszLXhWsQSICTMYG2qYQVdCFoT+11qhechTScS7HH3mM59xD7J17EUCBioh84ooz16cM0TLHDDPJPELV5rz61//+je/+U3X0MNHjtqtHMpO7exngLoWpiLDQMOjFw4e6WewoFGPXq70aOawUzvLldmy6ROa3ClcnHehRBlDlMnbmcs621qRpELY5PShhorA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
In my project, I used this method to convert an array of bytes to BitmapImage:
public static BitmapImage? ConvertToBitmapImage(byte[]? imageData)
{
if (imageData == null || imageData.Length == 0) return null;
var image = new BitmapImage();
using (var mem = new MemoryStream(imageData))
{
mem.Position = 0;
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = mem;
image.EndInit();
}
image.Freeze();
return image;
}
You can use this function by passing an array of bytes to it:
public static BitmapImage? Base64ToBitmapImage(this string base64String)
{
byte[] binaryData = Convert.FromBase64String(base64String);
return ConvertToBitmapImage(binaryData);
}
you can use this functions.
private string ImageToBase64String(string file)
{
Bitmap bitmap = new Bitmap(file);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
string strBase64 = Convert.ToBase64String(arr);
return strBase64;
}
private Bitmap Base64StringToImage(string base64)
{
byte[] arr = Convert.FromBase64String(base64);
MemoryStream ms = new MemoryStream(arr);
Bitmap bitmap = new Bitmap(ms);
return bitmap;
}
The code above works fine. The cause of the problem its on MySQL return.
The value from a blob column returns returns as a byte on C# MySQL Lybrary.
And I was converting it to a Base64 String and recoverting to a byte.
I excluded this confusion in my code and problem fixed.
I have two functions: one to convert from image to byte and other to convert from byte to bitmapImage.
So, when I open the window with that images, I convert from byte to bitmapImage and it works great, but when I close and open it again it just keeps on memory and if I continue to do that time and time again it just throws an exception Out Of Memory exception
Image to byte->
private byte[] ConvertImageToBinary(Image img)
{
using (MemoryStream ss = new MemoryStream())
{
img.Save(ss, System.Drawing.Imaging.ImageFormat.Jpeg);
var s = ss.ToArray();
var jpegQuality = 50;
Image image;
using (var inputStream = new MemoryStream(s))
{
image = Image.FromStream(inputStream);
var jpegEncoder = System.Drawing.Imaging.ImageCodecInfo.GetImageDecoders()
.First(c => c.FormatID == System.Drawing.Imaging.ImageFormat.Jpeg.Guid);
var encoderParameters = new System.Drawing.Imaging.EncoderParameters(1);
encoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, jpegQuality);
Byte[] outputBytes;
using (var outputStream = new MemoryStream())
{
image.Save(outputStream, jpegEncoder, encoderParameters);
return outputBytes = outputStream.ToArray();
}
}
}
}
Byte to bitmap ->
public BitmapImage ConvertBinaryToImage(byte[] array)
{
var image = new BitmapImage();
using (var ms = new MemoryStream(array))
{
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad; // here
image.StreamSource = ms;
image.EndInit();
image.Freeze();
}
return image;
}
When I open the WindowDragAndDrop it loads all the images
But when I close it it still uses the same amount of memory
Image is indeed disposable (https://learn.microsoft.com/en-us/dotnet/api/system.drawing.image?view=netframework-4.8), so you also need:
using (var image = Image.FromStream(inputStream)){
}
Around everywhere you use Image objects.
The last line of the following code gives the error "Parameter is not valid", when the original image is an SVG:
var imageBytes = Convert.FromBase64String(imageBase64String);
var memStream = new MemoryStream(imageBytes);
//memStream.Seek(0, SeekOrigin.Begin);
var imageObject = new Bitmap(memStream);
Help please. Thanks.
EDIT: The image for example I am using is the image of the first formula in the following page right under the Theoremsection:
https://en.wikipedia.org/wiki/Green%27s_theorem
Can you try with 'using' for memorystream to handle garbage collection by itself?
var imageBytes = Convert.FromBase64String(imageBase64String);
Bitmap m = ByteToBitmap(imageBytes);
public static Bitmap ByteToBitmap(byte[] imageByte)
{
using (MemoryStream mStream = new MemoryStream())
{
mStream.Write(imageByte, 0, imageByte.Length); // this will stream dataand handle image length by itself
mStream.Seek(0, SeekOrigin.Begin);
Bitmap bm = new Bitmap(mStream);
return bm;
}
}
For SVG,
public static Bitmap ByteToBitmap(byte[] imageByte)
{
using (MemoryStream mStream = new MemoryStream(imageByte))
{
var s= SvgDocument.Open(mStream);
var bm= svgDocument.Draw();
return bm;
}
}
I have problem with converting BitmapImage to byte[]. I tried a lot of solutions and nothing works, every time i get different errors.
For example i found nice solutions but it also doesn't work. What's wrong with it?
I'm using Windows Phone 8.1.
public static byte[] ImageToBytes(BitmapImage img)
{
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap btmMap = new WriteableBitmap(img);
System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100);
img = null;
return ms.ToArray();
}
}
this was taken from here: Convert Bitmap Image to byte array (Windows phone 8)
There is no argument given that corresponds to the required formal
parameter 'pixelHeight' of 'WriteableBitmap.WriteableBitmap(int, int)'
The type or namespace name 'Extensions' does not exist in the
namespace 'System.Windows.Media.Imaging' (are you missing an assembly
reference?)
or if somebody has got another idea how to convert it, please post it. Thanks a lot for any help!
I also tried this: BitmapImage to byte[]
but there was problem with usings
'BitmapImage' is an ambiguous reference between 'System.Windows.Media.Imaging.BitmapImage' and 'Windows.UI.Xaml.Media.Imaging.BitmapImage'
so I used "BitmapEncoder" but it doesn't have method like Save and Frame.
I think that it can't be done on this platform. I change my project to Windows Phone Silverlight/8.0 and there is working everything.
public static BitmapImage BytesToImage(byte[] bytes)
{
BitmapImage bitmapImage = new BitmapImage();
try
{
using (MemoryStream ms = new MemoryStream(bytes))
{
bitmapImage.SetSource(ms);
return bitmapImage;
}
}
finally { bitmapImage = null; }
}
public static byte[] ImageToBytes(BitmapImage img)
{
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap btmMap = new WriteableBitmap(img);
System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100);
img = null;
return ms.ToArray();
}
}
see the below link it might help
https://social.msdn.microsoft.com/Forums/en-US/713c0ed1-d979-43ef-8857-bbe0b35576a9/windows-8-how-to-convert-bitmapimage-into-byte?forum=winappswithcsharp
Have you tried
MemoryStream ms = new MemoryStream();
WriteableBitmap wb = new WriteableBitmap(myImage);
wb.SaveJpeg(ms, myImage.PixelWidth, myImage.PixelHeight, 0, 100);
byte[] imageBytes = ms.ToArray();
You can also use extension method here
public static class MyExtensions
{
public static Byte[] ByteFromImage(this System.Windows.Media.Imaging.BitmapImage imageSource)
{
Stream stream = imageSource.StreamSource;
Byte[] imagebyte = null;
if (stream != null && stream.Length > 0)
{
using (BinaryReader br = new BinaryReader(stream))
{
imagebyte = br.ReadBytes((Int32)stream.Length);
}
}
return imagebyte;
}
}
and then call
System.Windows.Media.Imaging.BitmapImage myImage = new System.Windows.Media.Imaging.BitmapImage();
byte[] imageBytes = myImage.ByteFromImage();
If you're going to do any transformation on the image, you'll want to use the appropriate image encoder, then do something like below. If you're working with a multi-frame image (eg TIF), you need to add the frames one at a time to the encoder or you'll only get the first frame of the image.
MemoryStream ms = null;
TiffBitmapEncoder enc = null
enc = new TiffBitmapEncoder();
enc.Compression = TiffCompressOption.Ccitt4;
enc.Frames.Add(BitmapFrame.Create(bmpImg));
using (ms = new MemoryStream())
{
enc.Save(ms);
}
return ms.ToArray();
How can I load a bitmapImage from base64String in windows 8?
I tried this but I am not successful. It used to work on windows phone. What is different?
Looks like I have to use the function setsourceasync. When I use that, then I am required to pass the parameter as IRandomMemory which I am unable to do. How to do this?
public static BitmapImage Base64ToImage(string base64String)
{
var bitmapImage = new BitmapImage();
try
{
if (!String.IsNullOrEmpty(base64String))
{
var imageBytes = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
bitmapImage.SetSourcec(ms);
return bitmapImage;
}
}
}
catch (Exception e)
{
}
return null;
}
To create an IRandomAccessStream object for the SetSource method, you need to use a DataWriter. Take a look to this code:
public async Task<BitmapImage> GetImage(string value)
{
if (value == null)
return null;
var buffer = System.Convert.FromBase64String(value);
using (InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(ms.GetOutputStreamAt(0)))
{
writer.WriteBytes(buffer);
await writer.StoreAsync();
}
var image = new BitmapImage();
image.SetSource(ms);
return image;
}
}
Here conversion methods for both System.Drawing.Bitmap and System.Windows.Media.BitmapSource.
Enjoy
Remark: Not tested on Win8 but there is not reason why it should not work.
string ToBase64(Bitmap bitmap)
{
if (bitmap == null)
throw new ArgumentNullException("bitmap");
using (var stream = new MemoryStream())
{
bitmap.Save(stream, ImageFormat.Png);
return Convert.ToBase64String(stream.ToArray());
}
}
string ToBase64(BitmapSource bitmapSource)
{
using (var stream = new MemoryStream())
{
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(stream);
return Convert.ToBase64String(stream.ToArray());
}
}
Bitmap FromBase64(string value)
{
if (value == null)
throw new ArgumentNullException("value");
using (var stream = new MemoryStream(Convert.FromBase64String(value)))
{
return (Bitmap)Image.FromStream(stream);
}
}
BitmapSource BitmapSourceFromBase64(string value)
{
if (value == null)
throw new ArgumentNullException("value");
using (var stream = new MemoryStream(Convert.FromBase64String(value)))
{
var decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
BitmapSource result = decoder.Frames[0];
result.Freeze();
return result;
}
}