【问题标题】:How to save photo location as a string variables of a class?如何将照片位置保存为类的字符串变量?
【发布时间】:2013-04-24 23:40:08
【问题描述】:

在我的应用程序中,用户使用 PhotoChooserTask 从相机胶卷中选择一张照片。我想将照片的位置保存到 LogEntry 类的字符串变量中,以便稍后根据需要重新加载照片。

Log 是 LogEntry 类项的 ObservableCollection。

public ObservableCollection<LogEntry> Log = new ObservableCollection<LogEntry>();

如何在不将照片保存到 LogEntry 中的字节数组且不将照片保存到独立存储中的情况下做到这一点?

【问题讨论】:

  • 您只需将照片位置添加到列表中。您为什么要费心将照片保存为字节和独立存储?
  • 问题是如何以 Windows Phone 期望并理解的方式找到照片位置。不,我不想保存为字节或独立存储。

标签: c# windows-runtime windows-phone-8 winrt-xaml


【解决方案1】:

首先,我将所选图片的名称和专辑名称保存在每个 LogEntry 项的属性中。

从相册加载图片:

        public BitmapImage GetPicture( string FileName )
        {
        // Work around for known bug in the media framework.  Hits the static constructors
        // so the user does not need to go to the picture hub first.
        MediaPlayer.Queue.ToString();

        MediaLibrary ml = null;
        PictureAlbum cameraRoll = null;
        PictureAlbum savedPictures = null;
        PictureAlbum samplePictures = null;
        PictureAlbum favoritePictures = null;

        int index = FileName.IndexOf( "\\" );
        string albumName = FileName.Remove( index, FileName.Length - index );
        string fileName = FileName.Remove( 0, index + 1 );

        foreach ( MediaSource source in MediaSource.GetAvailableMediaSources() )
            {
            if ( source.MediaSourceType == MediaSourceType.LocalDevice )
                {
                ml = new MediaLibrary( source );
                PictureAlbumCollection allAlbums = ml.RootPictureAlbum.Albums;

                foreach ( PictureAlbum album in allAlbums )
                    {
                    if ( album.Name == "Camera Roll" )
                        {
                        cameraRoll = album;
                        }
                    else if ( album.Name == "Saved Pictures" )
                        {
                        savedPictures = album;
                        }
                    else if ( album.Name == "Sample Pictures" )
                        {
                        samplePictures = album;
                        }
                    else if ( album.Name == "Favorite Pictures" )
                        {
                        favoritePictures = album;
                        }
                    }
                }
            }

        PictureAlbum Album;
        switch ( albumName )
            {
            case "Camera Roll":
                Album = cameraRoll;
                break;

            case "Saved Pictures":
                Album = savedPictures;
                break;

            case "Sample Pictures":
                Album = samplePictures;
                break;

            case "Favorite Pictures":
                Album = favoritePictures;
                break;

            default:
                Album = null;
                break;
            }

        if ( Album == null )
            {
            return new BitmapImage();
            }

        BitmapImage b = new BitmapImage();
        foreach ( Picture p in Album.Pictures.Take( Album.Pictures.Count ) )
            {
            if ( fileName == p.Name )
                {
                b.SetSource( p.GetThumbnail() );
                break;
                }
            }

        return b;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多