在使用xnconvert进行jpg转webp的时候,如果图片是高度特别长的图片时会转换失败,为什么呢?
原因很简单:WebP 格式对宽/高都有硬性上限。libwebp 只用 14 bit 存储宽高,因此单边最大为 16,383 像素。一旦你的长图高度超过这个值(比如 1080×24,000 的长截图),编码器就会直接返回 BAD\_DIMENSION,XnConvert 只能报“转换失败”。这是 WebP 规范/实现的限制。
快速可行的解决办法
- 先把“最长边”压到 ≤ 16383 再转 WebP
在 XnConvert 的 Actions 里加“Resize/调整大小”,勾选“保持比例(Preserve aspect ratio)”,把“高度”设成 16383(或更保守些 16000),然后输出 WebP 即可。命令行也可以这样用:cwebp input.jpg -resize 0 16383 -q 80 -o out.webp
(0 表示按比例自适应宽度)。 - 把超长图切成多段再转 WebP
XnView MP 提供“Create → Split image(s)”可把一张长图按行/列自动切片;切完再用 XnConvert 批量转 WebP。 - 改用不受该限制的格式
如果业务必须保留超长单张(如漫画长条/长截图),可以考虑发布为 JPEG/PNG(常见工具对尺寸限制更宽松),或在可控端测试 AVIF 兼容性后再决定是否替代。
另外:即便尺寸没超,极大像素总量也会占用很多内存(尤其 32 位程序),可能导致编码时“内存不足”。这类情况可先在 XnConvert 中勾选去除元数据(Strip metadata)、改用 64 位版本、或分段处理来缓解。
本文来自投稿,不代表本站立场,如若转载,请注明出处: