首页 > 解决方案 > 在 Blazor WebAssembly 中使用 RequestImageFileAsync 时控制格式

问题描述

Blazor Web 程序集有一种方便的方法,可以将包含图像的 IBrowserFile 转换为调整大小的版本 - 这对于在上传大图像之前调整大小非常方便。

此方法将格式作为确定输出文件格式的字符串。

是否有此属性将接受的有效格式列表?您可以在生成的文件上指定压缩或位深度值吗?

目前,如果我采用现有的 .jpg 文件并使用“jpg”格式字符串将其转换,则生成的文件虽然像素尺寸较小,但实际上大约是磁盘大小的两倍。大约 2.8MB 的 4000x3000 图像可以“缩小”为 7.7MB 大小的 2000x1500 图像。当目的是减少上传大小时,这显然没有帮助。我可以轻松上传 2.8MB 文件并在服务器上更有效地调整它的大小。

var imageFile = await file.RequestImageFileAsync("jpg", 2000, 2000);

这表明我使用的方法不正确 - 但微软关于此方法的文档没有提供关于有效“格式”字符串可能的线索,只是说明它是一个字符串类型。我试过“.jpg”、“JPEG”、“jpg”——所有这些似乎都产生了相同的有效 jpg 文件。我应该在这里传递什么来实际减小文件大小?

标签: image-processingfile-uploadblazor-webassembly

解决方案


请参阅https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types

它实际上不是“image/jpg”,而是“image/jpeg”。如果您指定不存在的格式,则后备(至少对我而言)似乎是“image/png”。这就是为什么你总是得到一个有效的图像但具有相同的文件大小。


推荐阅读