在我的nodejs应用程序中,我需要提取JPEG图像的矩形部分。我有坐标(x,y,宽度,高度),我只需要裁剪即可。
有许多库可以做到这一点(锐利,jimp,lwip等),但是它们都遵循decompress-modify-recompress模式。
由于这是一个服务器应用程序,因此我可能需要每秒处理多张图片,因此我希望使其表现得尽可能好。
幸运的是,我不需要精确的作物。如果结果大几个像素就没问题。因此,我可以在正确对齐的坐标上使用无损JPEG提取 1 。这样既可以节省CPU周期,内存,又可以避免任何潜在的质量损失。
我知道可以做到这一点,因为那里已经有工具可以做到这一点-我发现只有一个工具是用Javascript编写的。我还想避免使用CLI工具,因为我怀疑写入磁盘/调用工具/收集结果的开销将远远大于仅使用可用库在内存中进行重新压缩舞步(但是,如果对此有一个参数的话)方法,我也将其作为答案)。
那么-如何在Javascript(node.js,服务器端)中无损地裁剪JPEG图像(在正确对齐的坐标上)?当然,输出是另一个JPEG图像。
1 请注意,在这种情况下,“无损”不是意思是“无损JPEG”。这表示“无损裁剪”,其中无需解压缩/重新压缩即可提取JPEG的一部分。这是少数几个lossless operations that are possible on a JPEG之一。