当前位置: 首页 > 知识库问答 >
问题:

锐利图像库在调整大小时旋转图像?

李凯定
2023-03-14

当使用sharp image resize库https://github.com/lovell/sharp for Node.js时,图像将被旋转。

我没有写.rotate()的代码,那么为什么要旋转它,我怎样才能阻止它旋转呢?

我使用的是AWS提供的无服务器图像大小调整示例:https://github.com/awslabs/serverless-image-resizing。如果缩略图不存在,该示例使用lambda动态调整图像大小

S3.getObject({Bucket: BUCKET, Key: originalKey}).promise()
.then(data => Sharp(data.Body)
      .resize(width, height)
      .toFormat('png')
      .toBuffer()
    )
.then(buffer => S3.putObject({
        Body: buffer,
        Bucket: BUCKET,
        ContentType: 'image/png',
        Key: key,
      }).promise()
    )
.then(() => callback(null, {
        statusCode: '301',
        headers: {'location': `${URL}/${key}`},
        body: '',
      })
    )
.catch(err => callback(err))

原始大图像:

调整图像大小:注意它也被旋转了:

共有1个答案

曹高阳
2023-03-14

问题实际上是这样的:当您调整图像的大小时,exif数据会丢失。exif数据包括图像的正确方向,即向上的方向。

幸运的是,sharp有一个保留exif数据的特性.withMetadata()。因此需要将上面的代码更改为:

S3.getObject({Bucket: BUCKET, Key: originalKey}).promise()
.then(data => Sharp(data.Body)
      .resize(width, height)
      .withMetadata() // add this line here
      .toBuffer()
    )

(注意,您还需要删除.toFormat('png')调用,因为png不像jpeg那样支持exif)

 类似资料:
  • 我正在使用Facebook的Fresco库从URL加载和显示图像。 我如何在Java中调整这个图像的大小?

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro

  • 问题内容: 在Django中上传图片后,如何轻松调整其大小?我正在使用Django 1.0.2,并且已经安装了PIL。 我当时正在考虑重写Model的save()方法以调整其大小,但是我真的不知道如何开始并覆盖它。 有人可以指出我正确的方向吗?谢谢 :-) @GuðmundurH:这将不起作用,因为django-stdimage软件包在Windows上不起作用 问题答案: 在这种方法中,你可以将块

  • 我正在开发一个应用程序,它具有通过拖动右下角按钮来调整和旋转imageview的功能。 我看到一个应用程序,它有一个功能,如果我们拖动右下角的按钮对角,imageview大小已经调整,或者如果我们拖动按钮向左或向右的方向,imageview已经按照方向旋转。我希望在我的应用程序中实现此功能 我正在努力实现单指旋转以及调整imageview的大小。 我可以通过拖动它的右下角按钮成功地实现调整图像视图

  • 我有一个尺寸为800x800的图像,其大小为170 kb。我想将此图像调整为600x600。调整大小后,我希望缩小图像大小。我该怎么做?

  • 问题内容: 我要在pdf文件中添加一个水印。水印是.bmp图像,并且是2290 x3026。尝试调整此图片的大小以适合页面时,我遇到很多麻烦,有人有什么建议吗? 这是方法的输出。 我会与你们共享pdf图片,但不幸的是我不能。 我应该尝试改用.jpg吗?我真的不知道iText如何处理不同的图像扩展名。 问题答案: 您可以使用另一种方法:“手动”调整图像大小(即通过图像处理软件),而不是通过iText