• windows phone 中对图片的存储和还原显示


    以下两个方法分别用来完成对图片的存储以及还原显示:

    一:存储图片

            public static string ImageSave(string ISFileName, Image SLImage)
            {
                var ISAccErr = "独立存储文件系统访问失败。";
                var Rlt = "";
                var WBmp = new WriteableBitmap(SLImage.Source as BitmapSource);
                var Buf = new byte[2 * 4 + WBmp.Pixels.Length * 4];
                BitConverter.GetBytes(WBmp.PixelWidth).CopyTo(Buf, 0);
                BitConverter.GetBytes(WBmp.PixelHeight).CopyTo(Buf, 4);
                for (var I = 0; I < WBmp.Pixels.Length; I++)
                {
                    BitConverter.GetBytes(WBmp.Pixels[I]).CopyTo(Buf, I * 4 + 8);
                }
                try
                {
                    var FO = IsolatedStorageFile.GetUserStoreForApplication();
                    var FS = FO.OpenFile(ISFileName, System.IO.FileMode.OpenOrCreate);
                    FS.Write(Buf, 0, Buf.Length); FS.Close(); FS.Dispose();
                }
                catch
                {
                    Rlt = ISAccErr;
                }
                return Rlt;
            }

    二:还原显示图片

    public static string ImageRestore(string ISFileName, Image SLImage)
            {
                var ISAccErr = "独立存储文件系统访问失败。";
                var ISFileErr = "独立存储文件格式错误。";
                var Rlt = ""; var Buf = null as byte[];
                try
                {
                    var FO = IsolatedStorageFile.GetUserStoreForApplication();
                    var FS = FO.OpenFile(ISFileName, System.IO.FileMode.OpenOrCreate);
                    Buf = new byte[FS.Length]; FS.Read(Buf, 0, Buf.Length);
                    FS.Close(); FS.Dispose();
                }
                catch
                {
                    Rlt = ISAccErr;
                }
                if (Rlt == "")
                {
                    if (!(Buf.Length >= 2 * 4))
                    {
                        Rlt = ISFileErr;
                    }
                    else
                    {
                        var PixelWidth = BitConverter.ToInt32(Buf, 0);
                        var PixelHeight = BitConverter.ToInt32(Buf, 4);
                        var WBmp = new WriteableBitmap(PixelWidth, PixelHeight);
                        if (!(Buf.Length >= (2 * 4 + WBmp.Pixels.Length * 4)))
                        {
                            Rlt = ISFileErr;
                        }
                        else
                        {
                            for (var I = 0; I < WBmp.Pixels.Length; I++)
                            {
                                WBmp.Pixels[I] = BitConverter.ToInt32(Buf, I * 4 + 8);
                            }
                            SLImage.Source = WBmp;
                        }
                    }
                }
                return Rlt;
            }

    另外:

    在给图片赋值的时候,不能直接写成   ImgA=ImgB;

    Image对象在定义的时候有一个SOURCE和STRETCH属性,在赋值的时候需要使用SOURCE属性来对Image对象赋值,例如:

    ImageSource source=ImgB.source as ImageSource;

    ImgA.source=source;

  • 相关阅读:
    Django路由控制
    Django杂录
    JQuery
    php-高级计算器
    单项链表
    php解决约瑟夫环
    开灯算法问题
    PHP经典算法之背包问题
    归并排序
    php踩过的那些坑(5)浮点数计算
  • 原文地址:https://www.cnblogs.com/mokey/p/2252234.html
Copyright © 2020-2023  润新知