1

I am new to windows phone dev. My small app need a bytesarray from image (photo gallery). I tried many ways to convert, but it did not work fine.

here is my code:

public static byte[] ConvertBitmapImageToByteArray(BitmapImage bitmapImage)
    {
        using (var ms = new MemoryStream())
        {
            var btmMap = new WriteableBitmap(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
            // write an image into the stream
            btmMap.SaveJpeg(ms, bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);
            return ms.ToArray();
        }
    }

But then I saved this byte array to image in photogallery, I was be a black image!

public static void SavePicture2Library(byte[] bytes)
    {
        var library = new MediaLibrary();
        var name = "image_special";
        library.SavePicture(name, bytes);
    }

Could anyone help me? Please test your code :( Thanks so much!


Update resolved!

var wBitmap = new WriteableBitmap(bitmapImage);
            wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
            stream.Seek(0, SeekOrigin.Begin);
            data = stream.GetBuffer();

2 Answers 2

3

To anyone who finds this, this works;

Image to bytes;

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();
            }
        }

Bytes to Image

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; }
        }
Sign up to request clarification or add additional context in comments.

Comments

0

for windows phone 8

using System.IO;

public static class FileToByteArray
{
    public static byte[] Convert(string pngBmpFileName)
    {
        System.IO.FileStream fileStream = File.OpenRead(pngBmpFileName);

        using (MemoryStream memoryStream = new MemoryStream())
        {
            fileStream.CopyTo(memoryStream);
            return memoryStream.ToArray();
        }
    }
}
byte[] PasPhoto = FileToByteArray.Convert("Images/NicePhoto.png")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.