简体   繁体   English

将图像保存到手机存储

[英]Save image to phone storage

I have image control and I want to save this image to phone storage. 我有图像控件,我想将此图像保存到手机存储中。 So, I have Image control and below button. 所以,我有图像控件和下面的按钮。 When user click the button, image should be saved to phone storage. 当用户单击按钮时,图像应保存到手机存储中。 How can I do this ? 我怎样才能做到这一点 ?

I found code: 我找到了代码:

 // Create a file name for the JPEG file in isolated storage.
        String tempJPEG = "TempJPEG";

        // Create a virtual store and file stream. Check for duplicate tempJPEG files.
        var myStore = IsolatedStorageFile.GetUserStoreForApplication();
        if (myStore.FileExists(tempJPEG))
        {
            myStore.DeleteFile(tempJPEG);
        }

        IsolatedStorageFileStream myFileStream = myStore.CreateFile(tempJPEG);


        // Create a stream out of the sample JPEG file.
        // For [Application Name] in the URI, use the project name that you entered 
        // in the previous steps. Also, TestImage.jpg is an example;
        // you must enter your JPEG file name if it is different.
        StreamResourceInfo sri = null;
        Uri uri = new Uri("[Application Name];component/TestImage.jpg", UriKind.Relative);
        sri = Application.GetResourceStream(uri);

        // Create a new WriteableBitmap object and set it to the JPEG stream.
        BitmapImage bitmap = new BitmapImage();
        bitmap.CreateOptions = BitmapCreateOptions.None;
        bitmap.SetSource(sri.Stream);
        WriteableBitmap wb = new WriteableBitmap(bitmap);

        // Encode the WriteableBitmap object to a JPEG stream.
        wb.SaveJpeg(myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
        myFileStream.Close();

        // Create a new stream from isolated storage, and save the JPEG file to the media library on Windows Phone.
        myFileStream = myStore.OpenFile(tempJPEG, FileMode.Open, FileAccess.Read);

        // Save the image to the camera roll or saved pictures album.
        MediaLibrary library = new MediaLibrary();


        Picture pic = library.SavePicture("SavedPicture.jpg", myFileStream);
        MessageBox.Show("Image saved to saved pictures album");


        myFileStream.Close();

But how I can put my image from image control here ? 但是如何在这里将图像从图像控件中放入呢?

Simple example saving to Isolated Storage from image control. 从图像控件保存到隔离存储的简单示例。

Stream ImageStream = (MyImageControl.Source as BitmapImage).GetStream();

IsolatedStorageFile IsoStore = IsolatedStorageFile.GetUserStoreForApplication();
using (IsolatedStorageFileStream storageStream = IsoStore.CreateFile("TestImage.bmp"))                             
   ImageStream.CopyTo(storageStream);


public static Stream GetStream(this BitmapImage image)
{
    MemoryStream stream = new MemoryStream();              
    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(image));
    encoder.Save(stream);
    return stream;
}

GetStream extension is taken from this answer WPF Image to byte[] . GetStream扩展从此答案WPF图像获取到byte [] I haven't tested this code but it should get you on the right track. 我尚未测试此代码,但它应该使您走上正确的道路。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM