如何解码图像 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

我们将向你展示如何从文件加载图像、使用 <img> 标记显示该图像并从其中创建 BitmapDecoder 对象。 BitmapDecoder 允许你访问元数据并获取图像中的像素数据。

你需要了解的内容

技术

先决条件

说明

步骤 1: 添加占位符图像

<img> 标记添加到 HTML 文件。

<img id="myImage" src="" />

随后,会将图像文件加载到 myImage 对象。

步骤 2: 使用文件选取器选择图像文件

创建新的 FileOpenPicker 对象,以便用户可以选择要打开的文件。设置文件扩展名以筛选 JPEG 图像。随即将显示选取器。

function DecodeImage() {
    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.fileTypeFilter.append(".jpg");
    picker.pickSingleFileAsync().then(function (file) {
        if (!file) {

注意  你可以通过使用 Windows.Graphics.Imaging.BitmapDecoder.getDecoderInformationEnumerator 获取系统上安装的编解码器支持的所有文件扩展名列表。

 

注意  如果用户取消,则 pickSingleFileAsync 方法将返回一个空对象。

 

步骤 3: 显示 Image 元素中的图像

为文件创建对象 URL 并将其设置为 Image 元素的源。

createObjectURL 方法创建对象中数据返回的 URL,例如 StorageFile。

            var objectURL = window.URL.createObjectURL(file, { oneTimeOnly: true });
            document.getElementById("myImage").src = objectURL;

步骤 4: 创建解码器对象

使用读取访问模式打开文件以获取 IRandomAccessStream。 然后,在数据流上创建 BitmapDecoder 对象。

    }).then(function (stream) {
        return Windows.Graphics.Imaging.BitmapDecoder.createAsync(stream);
    }).done(function (decoder) {
        // BitmapDecoder is ready for use.
    });
}

备注

因为有了解码器对象,你便可使用它执行以下操作:

相关主题

如何读取图像元数据

如何获取像素数据

如何编码图像

Windows.Graphics.Imaging