windows phone 获取手机图片库中图片

简介:

前置条件:手机和电脑未连接或连接电脑Zune软件关闭(与Zune软件连接时不允许访问图片库); 版本7.1

获取手机图片库图片的两种方式: PhotChooserTask方式和XNA方式进行获取

   PhotChooserTask获取

引用命名空间

// 引用
// PhotoChooserTask类用到
using Microsoft.Phone.Tasks;
// BitmapImage类用到
using System.Windows.Media.Imaging;

   隐藏文件代码:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
// 引用
// PhotoChooserTask类用到
using Microsoft.Phone.Tasks;
// BitmapImage类用到
using System.Windows.Media.Imaging;

namespace ChoosePhoto
{
     public  partial  class MainPage : PhoneApplicationPage
    {
         // 实例化图片选择器
        PhotoChooserTask photoChoose =  new PhotoChooserTask();
         //  构造函数
         public MainPage()
        {
            InitializeComponent();
             // 设置的委托事件
            photoChoose.Completed +=  new EventHandler<PhotoResult>(photoChoose_Completed);
        }
         // 事件处理完得到图片
         void photoChoose_Completed( object sender, PhotoResult e)
        {
             if (e.TaskResult==TaskResult.OK)
            {
                 // 实例化位图
                BitmapImage bi =  new BitmapImage();
                 // 设置位图源
                bi.SetSource(e.ChosenPhoto);
                 // 设置元素位图
                img.Source = bi;
                txtName.Content = e.OriginalFileName;
                
            }
        }
         ///   <summary>
        
///  button事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private  void txtName_Click( object sender, RoutedEventArgs e)
        {
             // 打开图片库
            photoChoose.Show();
             // 知识点①
            
// 是否显示拍照按钮
            photoChoose.ShowCamera =  true;
             // 知识点②
            
// 设置剪切区域的宽度
            photoChoose.PixelWidth =  50;
             // 设置剪切区域的高度
            photoChoose.PixelHeight =  100;
        }
    }
}

  知识点①:PhotoChooserTask类的属性,该属性表示是否显示启动相机按钮,一般显示比较好,增加图片来源途径

  

  知识点②:通俗的讲应该是设置或者获取截取区域的高度和宽度

 

  小结: 有裁剪功能是一大特色

   XNA方式获取

引用命名空间

// 引用XNA库
using Microsoft.Xna.Framework.Media;
// BitmapImage类用到
using System.Windows.Media.Imaging;

MediaLibrary应该可以译为媒体库,它包含了影音,图片,是所有媒体的集合

隐藏文件代码:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
// 引用XNA库
using Microsoft.Xna.Framework.Media;
// BitmapImage类用到
using System.Windows.Media.Imaging;

namespace XNAChoosePhoto
{
     public  partial  class MainPage : PhoneApplicationPage
    {
        
         // 知识点①
        MediaLibrary mediaL =  new MediaLibrary();
         //  构造函数
         public MainPage()
        {
            InitializeComponent();
             // 获得图片的方法
            GetPic();
        }
         ///   <summary>
        
///  获得一张图片
        
///   </summary>
         void GetPic()
        {
             // 获得媒体库中所有的图片
            PictureCollection pic = mediaL.Pictures;
             if (pic.Count> 1)
            {
                BitmapImage bi =  new BitmapImage();
                 // 知识点②
                Picture pc=pic[ 0];
                bi.SetSource(pc.GetImage());
                img.Source = bi;
                txtName.Text =  " 图片名称: " + pc.Name +  " ;\n该图片相集名称: " + pc.Album.Name +  " ;\n获取照片摄制时间 " + pc.Date;
            }
        }
    }
}

 知识点①:MediaLibrary是个很有用的类,比如你可以获得里面的歌曲

 

View Code
  MediaLibrary mediaL =  new MediaLibrary();
            SongCollection sc = mediaL.Songs;
             if (sc.Count >  1)
            {
                Song s = sc[ 0];
                MediaPlayer.Play(s);
            }

 

  知识点②:Picture类的一些属性或者方法会用得到,比如当前图片所在的相集,相集下是否还会包含相集,以及相集的名称,时间等

 小结:整体的思路是从集合中逐级剥离,媒体库(影音,图片)-------》图片集合------》图片-----》图片相关属性;之前忘记从哪个博主那里看到如果用到XNA中的类,在提交应用的时候不能通过

运行后的效果图:



本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/829571,如需转载请自行联系原作者

相关文章
|
Windows
windows103D对象,图片等隐藏
windows103D对象,图片等隐藏
89 0
|
2月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
167 1
|
3月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
301 0
|
5月前
|
XML 计算机视觉 数据格式
手机点击按钮进行切换图片
手机点击按钮进行切换图片
28 0
|
移动开发 JavaScript 前端开发
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
195 0
|
编解码 iOS开发 Windows
B站电脑版,原来还隐藏着这个白嫖福利|Windows如何打开heic图片?
B站电脑版,原来还隐藏着这个白嫖福利|Windows如何打开heic图片?
|
5月前
|
机器人 Linux 数据安全/隐私保护
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
193 0
|
5月前
|
机器人 Linux 数据安全/隐私保护
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)(下)
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
109 0
|
5月前
|
Linux Python Windows
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)(上)
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
69 0
|
12月前
|
开发者 Windows
windows | windows11打开手机app
手机上面用习惯了app,那么我们电脑上面可以使用吗?肯定是可以的啦!不用模拟器!
153 0
windows | windows11打开手机app

热门文章

最新文章

下一篇
无影云桌面