【问题标题】:Rotating image without increasing file size (Sharp/Node)在不增加文件大小的情况下旋转图像(Sharp/Node)
【发布时间】:2021-12-25 03:26:48
【问题描述】:

我正在尝试使用 Sharp 和 Nodejs 在我的计算机上旋转图像,但每次旋转都会导致文件大小略有增加,以至于我得到的图像是其原始大小的 10 倍(从 50kb 到 500kb ) 只需旋转它。

我注意到在 stackoverflow 上有类似的问题,但他们似乎都有一个与所使用的技术堆栈相关的解决方案,而我找不到与此相关的任何东西与 sharp/node。

也许解决方案与有损编码有关,我不确定,但我的目标是旋转图像,如 Windows 上的照片应用程序,它能够在不增加文件大小的情况下旋转,或者至少原始文件大小是当图像旋转到其原始方向时恢复。

使用的代码非常简单:

await sharp(filepath).rotate(90).toFile(output, rotateImgCallback);

【问题讨论】:

标签: javascript node.js sharp


【解决方案1】:

感谢@RobertKawecki 提供我需要的洞察力。我尝试使用以下方法获取输入图像方向:

let imgPromise = sharp(filepath);
const { orientation } = await imgPromise.metadata();

然后相应地计算新方向并设置它:

await imgPromise.withMetadata({
        orientation: newOrientation
      }).toFile(output, rotateImgCallback);

没有任何旋转操作

这在 jpeg 上效果很好,但现在我发现 png 不使用 exif 方向,所以我也必须想办法解决这个问题。

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多