2017-01-25 3 views
1

Я использовал эту статью Background image thumbnail processing with Azure Functions and NodeJS для создания уменьшенного изображения. Изображение было создано успешно. Но размер изображения был увеличен. Как это может произойти? Это должно быть очень мало? Как я могу решить эту странную проблему?Azure Функции, размер уменьшенного изображения больше, чем оригинальное изображение

Это Исходное изображение на хранение Blob

enter image description here

enter image description here

enter image description here

После процесса (миниатюрное изображение)

enter image description here

enter image description here

enter image description here

Это является функцией Лазурное (узел):

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); 

       } 

      }); 

    }); 

}; 
+1

Это не проблема с функциями Azure - это скорее проблема Jimp. Вы можете протестировать его в своем локальном изображении. –

+0

Типы содержимого не совпадают. Хранилище Blob может хранить их по-разному в зависимости от типа содержимого. –

+0

Спасибо, @ AaronChen-MSFT Я нашел решение. Посмотрите, что :) – Sampath

ответ

1

Я нашел решение для этого.

качество по умолчанию для JPEGs 100. Вы должны установить это к чему-то нижней, чтобы получить сжатие:

Вы можете прочитать об этом здесь: Image is resized down and gets bigger file size

Я должен установить .quality(50) как показано ниже. Эта проблема только с JPEGs.

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); 

       } 

      }); 

    }); 

}; 
Смежные вопросы