如何将图像存储在 Windows Phone 的 SqlCe 数据库中

Posted

技术标签:

【中文标题】如何将图像存储在 Windows Phone 的 SqlCe 数据库中【英文标题】:How to store image in SqlCe Database for windows Phone 【发布时间】:2011-07-23 12:44:43 【问题描述】:

不知道如何执行此操作,因为 Windows Phone 中没有 ado.net。如果您能向我展示一些代码和示例,将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

使用图像数据类型,请参阅此示例:http://erikej.blogspot.com/2009/11/how-to-save-and-retrieve-images-using.html

【讨论】:

尝试方法后会回到这里。 想知道 sqlCe 数据库中的 1) Varbinary、二进制 2) 图像是否有任何数据限制。例如:varbinary 的限制为 8000kb。那么图像数据类型呢?将图片转换为 byte[] 或图像 dataType 的流?谢谢 二进制和 varbinary 最大大小为 8000 字节,图像 2 GB 谢谢。Windows 手机至少有 5MegaPixel 摄像头,一张高分辨率照片很容易超过 3MegaByte 或更多。将尝试在存储之前对图像进行返工。不知道SqlCe数据库大小有没有限制。 Windows Phone 上的最大数据库大小为 512 MB【参考方案2】:

我建议的方法:

1- 如果您的图像不会很大,那么您可以将图像数据的 Base64 字符串作为字符串字段存储在数据库中。

var base64String = Convert.ToBase64String(imageData); // and store this to database
var imageData = Convert.FromBase64String(imageDataString); // read image data from database

2- 否则,您可以为您的图像(或数据库记录)分配一个唯一的 GUID,并将您的图像存储在 IsolatedStorageFile 中。

using (var isf = IsolatedStorageFile.GetUserStoreForApplication())

    using (var writer = new BinaryWriter(new IsolatedStorageFileStream(filename, System.IO.FileMode.Create, isf)))
    
        writer.Write(imageData);
    

将在一分钟内添加代码

【讨论】:

感谢您的建议。我会尝试选项(1)。但是,当我将图像控件用于 Base64 数据时,IE 浏览器将不支持 base64。于是,我在 SqlCe 中寻找 Varbinary 来存储图像。这将如何完成? 你没有提到你想在浏览器控制中使用它。为了在 silverlight Image 控件上显示它,应该可以。我个人选择选项(2)更可靠。 Option2 应该适用于 ISO。但是,我需要将图像存储在 SqlCe DB 中。在 SqlCeDb 中将图像存储为 base64 的好主意。但是,我喜欢将其存储为流。谢谢

以上是关于如何将图像存储在 Windows Phone 的 SqlCe 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

将带有 Exif 信息的图像从 Windows Phone 发送到 Java 服务器

如何在单击并再次在 Windows Phone 中释放时更改按钮图像

如何在 Windows Phone 8.1 上从数据库中获取图像并将其显示为字节数组

在 Windows Phone 8.1 上播放 GIF

在Windows Phone上下载背景图像

如何以编程方式更改 Windows Phone 中设置器值中的图像