2016-04-26 5 views
0

Ich arbeite an einer Fotografie-Social-Media-Website und ich erstelle Thumbnails für jedes Bild. Die Bilder werden in einer anständigen Größe auf der Seite angezeigt, so dass die Qualität nicht zu stark verringert werden kann (z. B. www.prsmphoto.com/user/tyler).Thumbnail-Generierung in NodeJS mit LWIP

Derzeit verwende ich dies: image.scale (.15);

Was macht eine ordentliche Arbeit, die Dateigröße zu verringern. Dies zerstört jedoch die Qualität von kleineren Bildern, die schrecklich aussehen. Wie soll ich das angehen? Ich habe Probleme, meinen Kopf darum zu wickeln.

Antwort

0

Versuchen Sie, scharfe oder Canvas-Modul zu verwenden.

Zunächst einmal sind sie 6-8 mal schneller als lwip: https://github.com/ivanoff/images-manipulation-performance

Dann Sie Datei mit Qualität speichern können Sie wollen:

var stream = canvas.jpegStream({ 
    quality: 80 // JPEG quality (0-100) default: 75 
}); 
sharp('input.png') 
    .rotate(180) 
    .resize(300) 
    .flatten() 
    .background('#ff6600') 
    .overlayWith('overlay.png', { gravity: sharp.gravity.southeast }) 
    .sharpen() 
    .withMetadata() 
    .quality(90) 
    .webp() 
    .toBuffer() 
    .then(function(outputBuffer) { 
    // outputBuffer contains upside down, 300px wide, alpha channel flattened 
    // onto orange background, composited with overlay.png with SE gravity, 
    // sharpened, with metadata, 90% quality WebP image data. Phew! 
    });