image-processing - 在 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 文件。我应该在这里传递什么来实际减小文件大小?
解决方案
请参阅https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
它实际上不是“image/jpg”,而是“image/jpeg”。如果您指定不存在的格式,则后备(至少对我而言)似乎是“image/png”。这就是为什么你总是得到一个有效的图像但具有相同的文件大小。
推荐阅读
- docker - 在 Docker 中构建干净的 Go 应用程序
- codeigniter - Codeigniter mkdir:权限被拒绝错误
- awk - awk 中是否有任何 if 语句来比较文件中的 greped 单词?
- php - 输出结果与 SUM 计数
- android - 如何在 Html.fromHtml 中显示链接(如果它们位于
元素?
- python-3.x - Selenium - 登录 Facebook 导致 Web 驱动程序无限期停止
- apache - nginx 反向代理 + apache 不会显示图像
- flutter - 如何从其他类更新 StatefulWidget?
- reactjs - 即使上下文选项正确显示,简单的图表也不显示条形图
- algorithm - 在地图中更新值的快速方法