Как взять растровое изображение и сохранить его в виде файла изображения JPEG на устройстве Windows Phone 7? - PullRequest
2 голосов
/ 24 февраля 2012

Я ищу, чтобы создать функцию, которая берет BitmapImage и сохраняет ее в формате JPEG на локальном устройстве Windows Phone 7 в изолированном хранилище:

static public void saveImageLocally(string barcode, BitmapImage anImage)
{
 // save anImage as a JPEG on the device here
}

Как мне это сделать?Я предполагаю, что использовал IsolatedStorageFile как-то?

Спасибо.

РЕДАКТИРОВАТЬ:

Вот что я нашел до сих пор ...Кто-нибудь может подтвердить, если это правильный способ сделать это?

    static public void saveImageLocally(string barcode, BitmapImage anImage)
    {
        WriteableBitmap wb = new WriteableBitmap(anImage);

        using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var fs = isf.CreateFile(barcode + ".jpg"))
            {
                wb.SaveJpeg(fs, wb.PixelWidth, wb.PixelHeight, 0, 100);
            }
        }
    }

    static public void deleteImageLocally(string barcode)
    {
        using (IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
            MyStore.DeleteFile(barcode + ".jpg");
        }
    }

    static public BitmapImage getImageWithBarcode(string barcode)
    {
        BitmapImage bi = new BitmapImage();

        using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var fs = isf.OpenFile(barcode + ".jpg", FileMode.Open))
            {
                bi.SetSource(fs);
            }
        }

        return bi;
    }

Ответы [ 2 ]

5 голосов
/ 24 февраля 2012

Чтобы сохранить это:

var bmp = new WriteableBitmap(bitmapImage);
using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (IsolatedStorageFileStream stream = storage.CreateFile(@"MyFolder\file.jpg"))
        {
            bmp.SaveJpeg(stream, 200, 100, 0, 95);
            stream.Close();
        }
    }

Да, материал, который вы добавили в свое редактирование, именно то, что я делал раньше :), он работает.

1 голос
/ 31 декабря 2013

Это мой код, но оттуда вы можете получить необходимые баллы:

        var fileName = String.Format("{0:}.jpg", DateTime.Now.Ticks);
        WriteableBitmap bmpCurrentScreenImage = new WriteableBitmap(480, 552);
        bmpCurrentScreenImage.Render(yourCanvas, new MatrixTransform());
        bmpCurrentScreenImage.Invalidate();
        SaveToMediaLibrary(bmpCurrentScreenImage, fileName, 100);


    public void SaveToMediaLibrary(WriteableBitmap bitmap, string name, int quality)
    {
        using (var stream = new MemoryStream())
        {
            // Save the picture to the Windows Phone media library.
            bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, quality);
            stream.Seek(0, SeekOrigin.Begin);
            new MediaLibrary().SavePicture(name, stream);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...