在 Blazor WebAssembly 中使用 RequestImageFileAsync 时控制格式
Control over format when using RequestImageFileAsync in Blazor WebAssembly
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 文件。我应该在此处传递什么以实际减小文件大小?
我认为这个方法使用html类型:
html types
试试 "image/jpg"。
不过请注意,这是对浏览器的请求,浏览器可以返回任何它想要的内容。我相信这在所有浏览器上都能正常工作,但你最好检查一些常见的罪魁祸首(嗨,Opera!)来确认。
见https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
其实不是“image/jpg”而是“image/jpeg”。如果您指定不存在的格式,回退(至少对我而言)似乎是“image/png”。这就是为什么您始终获得有效图像但文件大小相同的原因。
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 文件。我应该在此处传递什么以实际减小文件大小?
我认为这个方法使用html类型: html types
试试 "image/jpg"。
不过请注意,这是对浏览器的请求,浏览器可以返回任何它想要的内容。我相信这在所有浏览器上都能正常工作,但你最好检查一些常见的罪魁祸首(嗨,Opera!)来确认。
见https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
其实不是“image/jpg”而是“image/jpeg”。如果您指定不存在的格式,回退(至少对我而言)似乎是“image/png”。这就是为什么您始终获得有效图像但文件大小相同的原因。