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

Azure 函数,缩略图大小大于原始图像

梁兴文
2023-03-14

我已经使用这个带有Azure函数和NodeJS文章的背景图像缩略图处理来创建一个缩略图。已成功创建映像。但是图像的尺寸增加了。这是怎么发生的?它一定很小不是吗?我该如何解决这个奇怪的问题?

这是Blob存储器上的原始图像

处理后(缩略图)

这是 Azure 函数(节点):

var Jimp = require("jimp");

module.exports = (context, myBlob) => {

    // Read image with Jimp
    Jimp.read(myBlob).then((image) => {

        // Manipulate image
        image
            .resize(200, Jimp.AUTO) 
            .greyscale()
            .getBuffer(Jimp.MIME_JPEG, (error, stream) => {

                // Check for errors
                if (error) {
                    context.log(`There was an error processing the image.`);
                    context.done(error);
                }
                else {
                    context.log(`Successfully processed the image`);

                    // Bind the stream to the output binding to create a new blob
                    context.done(null, stream);

                }

            });

    });

};

共有2个答案

袁英豪
2023-03-14

我也有同样的问题,我使用了夏普,这对我很有用。如果您需要更多帮助,请告诉我,我将分享我的完整函数代码

 const sharp = require('sharp');
 const thumbnailWidth = 250
 module.exports = async (context, myBlob) => {
    
      let thumbBuffer
      const image = await sharp(myBlob)
      image.resize({ width: thumbnailWidth })
      return thumbBuffer = await image.toBuffer()
 }
司徒浩思
2023-03-14

我已经找到了解决办法。

JPEG的默认质量为100。您应该将其设置为较低的值以获得压缩:

您可以在此处了解更多信息:图像大小缩小,文件大小变大

我必须设置<code>。质量(50)如下所示。此问题仅适用于JPEG

var Jimp = require("jimp");

module.exports = (context, myBlob) => {

    // Read image with Jimp
    Jimp.read(myBlob).then((image) => {

        // Manipulate image
        image
            .resize(200, Jimp.AUTO)
            .greyscale()
            .quality(50) // set the quality for JPEGs
            .getBuffer(Jimp.MIME_JPEG, (error, stream) => {

                // Check for errors
                if (error) {
                    context.log(`There was an error processing the image.`);
                    context.done(error);
                }
                else {
                    context.log(`Successfully processed the image`);
                    // Bind the stream to the output binding to create a new blob
                    context.done(null, stream);

                }

            });

    });

};
 类似资料:
  • 我正在尝试调整缩略图中的图像大小,以固定框的大小。我试过这个: 这是原始图像的外观:http://files.parsetfss.com/12917a88-ac80-4e5e-a009-fc634161b79c/tfss-6c59b59f-8f57-4610-966e-31bbc203707b-samsung-galaxy-note-4-7290-002.jpg 我也试过: 但是没有任何变化,没有

  • 我试图创建一个GUI如下图所示 然而,当我运行我的文件时,图像的大小仍然保持原来的大小 我怎样才能缩小图像的大小,这样我就可以在旁边添加文本了?

  • 问题内容: 我想拍摄一张图像并更改图像的比例,虽然它是一个numpy数组。 例如,我有一个可口可乐瓶的图像: bottle-1 转换为一个numpy的形状数组,我想调整其大小以表示第二个图像的大小: bottle-2 形状为。 如何在保持原始图像的同时将图像尺寸更改为特定形状?其他答案建议每隔一行或第三行剥离,但是我想要做的基本上是像通过图像编辑器(但在python代码中)那样收缩图像。是否有任何

  • 我创建了一个Azure函数,在每次用户上传图片到我的存储容器时创建一个缩略图。 我的问题是,当用户删除图片时,如何删除缩略图?我可以使用Blob触发器吗?我应该使用时间触发器来检查哪个缩略图没有相关联的图片并删除该缩略图吗?

  • 我正在尝试创建以下图库: -一个大图像 -下面图库图像的缩略图 -大图像应在lightbox图库中单击后打开所有图像 我让lightbox画廊使用PhotoSwipe工作,当我点击大图像时,它就会触发。我也有缩略图在大图像下面的地方。我现在的问题是,当我单击其中一个缩略图时,我如何改变大图像?我见过很多例子(也是相当简单的例子),但在我的案例中似乎没有一个行得通。 下面是我为缩略图准备的代码: 我

  • 问题内容: 是否有可靠的,独立于框架的方法来确定客户端调整大小的物理尺寸? 问题答案: 您有2个选项: 选项1: 删除和属性,然后读取和 选项2: 创建一个JavaScript 对象,设置,然后读取和(您甚至不必将其添加到页面中即可执行此操作)。 由Pekka编辑 :按照评论中的约定,我更改了功能以在图像的“ onload”事件上运行。否则,大图像,而不会因为在拍摄时尚未加载任何回报。