我想转移到GraphicsMagick,因为我只是调整大小和旋转照片,我听说它快了一点.但它不直接采用-auto-orient选项.有没有其他方法可以有效地做到这一点?Imagemagick convert -auto-orient选项将读取EXIF方向标记,相应地旋转,然后将EXIF标记重置为orientation = 1.
请参阅:http://www.imagemagick.org/script/command-line-options.php?ImageMagick = 80iu7ek6jb638dl2kin7n3v4d5#auto-orient
我使用https://github.com/aheckmann/gm来调整图像大小.
var fs = require('fs');
var gm = require('gm');
var input = __dirname + '/input.jpg';
var output = __dirname + '/output.jpg';
gm(input)
.resize(350)
.stream( function(err, stdout, stderr) {
var writeStream = fs.createWriteStream( output, { encoding: 'base64' } );
var i = '';
stdout.on( 'data', function(data){
i += data.toString('base64');
});
stdout.on('end', function(){
writeStream.write( new Buffer(i, 'base64') );
writeStream.end();
});
} );
Run Code Online (Sandbox Code Playgroud)
问题是它不是在写整个图像.

我在nodejs中使用图形magick包装器,并使用以下代码创建方形缩略图:
var size = {width: 200, height: 200};
gm(sourcePath)
.resize(size.width * 2, (size.height * 2) + '')
.thumbnail(size.width, size.height + '^')
.gravity('center')
.extent(size.width, size.height)
.profile('*')
.write(outputPath, function (error) {
if (error) console.log('Error - ', error);
});
Run Code Online (Sandbox Code Playgroud)
这很好用,直到我的缩略图的大小比输入图像大.在这种情况下,我希望缩略图是规定的大小,但是要将图像放在它的中心而不是调整大小.
有没有办法用一组命令执行此操作,还是必须编写一些单独的逻辑来确定?
我想将图像裁剪到指定的像素区域.我想使用https://github.com/aheckmann/gm中的gm模块.我正在运行Linux Mint 13和node.js v0.9.4pre.
我遇到一个错误,听起来像graphicsmagick不知道jpegs:
Error: Command failed: gm convert: No decode delegate for this image format (./assets/images/temp/2aadd4379e1cf2b59429994270db2a8a.jpg)
Run Code Online (Sandbox Code Playgroud)
果然,gm convert -list formats没有显示jpeg代表:
<snip>
IPTC P rw- IPTC Newsphoto
IPTCTEXT P rw- IPTC Newsphoto text format
IPTCWTEXT P rw- IPTC Newsphoto text format
K25 S r-- Kodak Photo RAW
<snip>
Run Code Online (Sandbox Code Playgroud)
graphicsmagick有一个ftp文件夹,其中包含代理的源代码(带有自述文件.)所以我jpegsrc.v6b.tar.gz按照源文件附带的安装文档中的建议下载,解压缩并安装.
我敢肯定安装了JPEG库cjpeg和djpeg,也许还有其他的东西.然而make uninstall,我发现没有或没有.我还没有尝试过安装任何其他版本的jpeg库.安装jpeg库后,我卸载并重建了graphicsmagick.
仍然没有列出的JPEG代表gm convert -list formats.
我正在从Imagemagick迁移,即使没有安装此库,也没有任何调整jpeg的问题.
我该怎么做才能让图形处理jpeg? …
我正在尝试从网址加载图片的尺寸.到目前为止,我已尝试使用,GraphicsMagick但它给了我ENOENT错误.
这是我写的代码到目前为止.
var gm = require('gm');
...
gm(img.attribs.src).size(function (err, size) {
if (!err) {
if( size.width>200 && size.height>200)
{
console.log('Save this image');
}
}
});
Run Code Online (Sandbox Code Playgroud)
哪里img.attribs.src包含url source path图像.
更新
的价值 img.attribs.src
http://rack.1.mshcdn.com/assets/header_logo.v2-30574d105ad07318345ec8f1a85a3efa.png
如何使用GraphicsMagick从图像中删除背景色?我需要从图像中删除rgb(255,255,255)和rgb(254,254,254)颜色,并将其替换为透明度。
谢谢。
虽然已多次询问过,但现有的答案都没有帮助我.使用MEAN环境(在Mac OSX上),我安装了graphicsmagick:
sudo npm install gm
Run Code Online (Sandbox Code Playgroud)
每当我运行以下脚本时,我都会收到此错误:
{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }
Run Code Online (Sandbox Code Playgroud)
这是我试图运行的代码段:
var gm = require('gm');
//var gm = require('gm').subClass({ imageMagick: true }); //tried this one too
gm('./project/public/images/webshots/test1.jpg')
.resize(320, 240)
.write('./project/public/images/webshots/test2.jpg', function (err) {
if (!err) console.log('done');
if(err){
console.log(err);
}
});
Run Code Online (Sandbox Code Playgroud)
适当的书面许可由下列人员给出:
sudo chmod -R 777 ./project/public/images/webshots
Run Code Online (Sandbox Code Playgroud)
我甚至尝试了几种源/目标路径组合.我还能错过什么?
我正在使用nodejs和graphicsmagick来处理带有文本的图像,然后将最终的jpg流式传输到S3.
使用postman,我能够在我的localhost上测试这个流程,一切正常.但是,我现在遇到问题,我将它移到了Elastic Beanstalk.当我发布到端点时,它会将空白文件上传到S3,并且EB中没有记录错误.我认为它与软件有关,但有点卡住了.任何建议赞赏!谢谢!
顶级文件来自localhost,底层文件来自Elastic Beanstalk: http ://cl.ly/image/0O231k171N0W
var gm = require('gm');
var appRoot = require('app-root-path').path;
function createImage(caption, res) {
var originalImage = '/images/2015-02-24.jpg';
var textColor = 'white';
gm(appRoot + originalImage)
.fill(textColor)
.font( appRoot + '/fonts/BentonSans-Book.otf')
.drawText(0, 0, caption, 'Center')
.stream(function(err, stdout, stderr) {
sendToS3(err, stdout, stderr, originalImage, res);
});
}
function sendToS3(err, stdout, stderr, originalImage, client_response) {
var imageName = shortId.generate();
var buff = new Buffer('');
stdout.on('data', function(data) {
buff = Buffer.concat([buff, data]);
});
stdout.on('end', function(data) {
var data …Run Code Online (Sandbox Code Playgroud) imagemagick stream node.js graphicsmagick amazon-elastic-beanstalk
我能够将一个图像流传输到ImageMagick子进程中.我将我的代码从Pipe stream基于graphicsmagick/imagemagick子进程
我想合成多个图像流并将合成图像作为响应进行管道传输. 这是我的Node.js代码,它从我的AWS S3存储桶中检索图像,然后将其作为响应输出:
app.get('/composite_images', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
s3.get("/" + "fronttop.png").on("response", function(s3Res) {
// '-'' means standard in or stdin
var args = ['-', '-page', '+0+0', '-mosaic', '-'];
var convert = spawn("convert", args);
// This worked!
s3Res.pipe(convert.stdin);
convert.stdout.pipe(res);
convert.stderr.pipe(process.stderr);
}).end();
})
Run Code Online (Sandbox Code Playgroud)
官方文件说
"此时IM不允许您只读取这样的流中的一个图像,处理它,然后再读取另一个图像.所有IM命令将始终读取整个流,然后关闭它.这将被修复为部分IMv7脚本处理."
是否可以使用GraphicsMagick/ImageMagick来合成多个图像流?
我想创建一个Google Cloud功能,可以正确设置上传文件的内容类型.我知道如何使用GraphicsMagick或ImageMagick,但我不确定Google Cloud Function是否具有这些本机库.我如何知道他们是否有这些或未能如何安装它们?
imagemagick graphicsmagick google-cloud-platform google-cloud-functions