Quiero unir 2 imágenes usando node.js. O más bien, quiero colocar una imagen más pequeña en cordinates x, y en una imagen más grande. Aún más preciso: tengo una imagen de gafas y una imagen de una cara y quiero poner las gafas en la cara. Hice algunas búsquedas en Google y encontré algunas bibliotecas de manipulación de imágenes, pero ninguna parece ser capaz de combinar imágenes.Fusionar 2 imágenes con node.js?
10
A
Respuesta
7
he utilizado:
https://github.com/learnboost/node-canvas
hacer algo similar (construir una imagen compuesta a partir de componentes sobre la marcha).
Funciona muy bien.
Aquí hay un código de ejemplo:
var Canvas = require('canvas'),
fs = require('fs'),
Image = Canvas.Image;
var _components = [{prefix:'f', count:12},
{prefix:'h', count:12},
{prefix:'i', count:12},
{prefix:'m', count:12}];
var _total = 1;
for (var i=_components.length - 1; i>=0; i--){
_components[i].mult = _total;
_total *= _components[i].count;
}
module.exports.ensureImageExists = function(img, cb){
fs.stat(__dirname + '/../public/images/rb/' + img, function(err, stats){
if (err){
if (err.code == 'ENOENT')
generateImage(img, cb);
else
cb(err);
}
else{
cb();
}
});
}
function generateImage(name, cb){
var re = /rb([0-9]*)\.png/
var num = parseInt(re.exec(name)[1]) % _total;
var parts = [];
for (var i=0; i<_components.length; i++){
var n = Math.floor(num/_components[i].mult);
parts.push(_components[i].prefix + (n + 1));
num -= n * _components[i].mult;
}
var canvas = new Canvas(45, 45),
ctx = canvas.getContext('2d');
drawParts();
function drawParts(){
var part = parts.shift();
if (!part)
saveCanvas();
else {
var img = new Image;
img.onload = function(){
ctx.drawImage(img, 0, 0, 45, 45);
drawParts();
};
img.src = __dirname + '/components/' + part + '.png';
}
}
function saveCanvas(){
canvas.toBuffer(function(err, buf){
if (err)
cb(err);
else
fs.writeFile(__dirname + '/../public/images/rb/' + name, buf, function(){
cb();
});
});
}
}
En este caso, los componentes se seleccionan basándose en el nombre de la imagen, pero que claramente podría hacer de otra manera. Además, me imagino que podrías transmitir la imagen si lo deseas; la escribo en un archivo para que esté disponible la próxima vez que se solicite.
puse una ruta como esta en manejar la generación:
app.get('/images/rb/:img', requireLogin, function(req, res, next){
//first make sure image exists, then pass along so it is handled
//by the static router
rbgen.ensureImageExists(req.params.img, function(err){
next();
})
});
18
Es posible que tenga esto: https://github.com/zhangyuanwei/node-images
multiplataforma imagen decodificador (PNG/JPEG/GIF) y el codificador (png/jpeg) para Nodejs
images("big.jpg").draw(images("small.jpg"), 10, 10).save("output.jpg");
Cuestiones relacionadas
- 1. cómo fusionar 2 imágenes sin utilizar el conjunto alfa?
- 2. ¿Cómo puedo fusionar 2 imágenes en Windows Phone?
- 3. Android fusionar dos imágenes
- 4. Cómo fusionar automáticamente 2 cabezales con mercurial
- 5. Backbone - Fusionar 2 colecciones juntas?
- 6. Node.js en Heroku con 2 puertos
- 7. Fusionar dos imágenes PNG con transparencia y mantener la transparencia
- 8. Java fusionar 2 colecciones en O (1)
- 9. fusionar 2 ramas de svn juntas
- 10. Node.JS Big-Endian UCS-2
- 11. 2 Imágenes superpuestas
- 12. git-svn fusionar 2 ramas svn
- 13. C# fusionar elementos distintos de 2 colecciones
- 14. ¿Cómo usar Canvas para fusionar dos imágenes en Android?
- 15. Compara 2 imágenes en php
- 16. Node.JS Knox s3 recuperación de imágenes
- 17. ¿Cómo fusionar imágenes en un lienzo usando PIL/Pillow?
- 18. Biblioteca de imágenes de Python: ¿cómo combinar 4 imágenes en una cuadrícula de 2 x 2?
- 19. 2 rayas de color de fondo con o sin imágenes?
- 20. iOS: procesamiento de imágenes de 2 pasos con CoreGraphics
- 21. Cómo fusionar 2 secuencias XML en Java mediante XSLT
- 22. fusionar o suma 2 arrays de "claves" en rubí
- 23. Costura de 2 imágenes en opencv
- 24. Node.js spawn con colores?
- 25. Cómo enviar archivos con node.js
- 26. Node.JS - Codificación de imágenes en base64 usando el Buffer
- 27. Cómo puedo fusionar blobs/contornos
- 28. Team Foundation Server fusionar sin fusionar
- 29. php fusionar dos matrices
- 30. Fusionar listas de salto
Gracias, parece exactamente lo que quiero. –
Fracasa con la imagen JPEG – Max