Tag: image processing

graphicsmagick裁剪取决于原始图像大小(resuse readstream)

我使用Meteor的collection-fs包来上传图片,并且我想用gm(readStrem).crop()从每个图片的中心剪下一个缩略图。 问题是, crop的x和y偏移量取决于原始图像的大小,图像大小会有所不同,我不能使用相同的reasdStream两次。 这打破了: var xOff = 0; var yOff = 0; var thumbnailWidth = 450; var thumbnailHeight = 600; gm(readStream).size(function (err, dimensions) { if ( dimensions ) { xOff = (dimensions.width – thumbnailWidth) / 2; yOff = (dimensions.height – thumbnailHeight) / 2; } gm(readStream) .crop(thumbnailWidth, thumbnailHeight, xOff, yOff) .stream() .pipe(writeStream); }) readStream的第二次使用返回Error: gm().stream() or […]

如何让我的Express应用程序尊重上传的Orientation EXIF数据?

我有一个Express应用程序,使用Mulder将图像上传到S3存储桶。 我没有做任何特别的事情,只是一个直接的上传,但是当它们在浏览器中显示时,一些iPhone图像是横向的。 我知道这在技术上是一个浏览器错误,Firefox现在支持image-orientation规则,但Chrome仍然显示在他们身边的图像。 有没有一种方法,我可以有快速读取EXIF数据,只需旋转它们上传之前?

OpenCV声明失败types不匹配

我正在使用节点opencv,我想获得两个PNG图像的标准,但我有这个: OpenCV错误:声明失败(src1.size == src2.size && src1.type()== src2.type())在标准,文件/build/opencv-RI6cfE/opencv-2.4.9.1+dfsg1/modules/core /src/stat.cpp,第1978行 大小是相等的,types是不同的。 第一个Mat返回16和3以及第二个24和4的type()和channels()方法。 我试图做convertGrayscale与两个图像,并得到“错误:图像是没有3通道”(好,第二有4个通道,但首先?) 我也试图做second.convertTo(第二,16),但得到了 libpng警告:iCCP:已知错误的sRGBconfiguration文件 并没有效果,second.type()仍然返回24 有什么方法可以将任何types的Mat转换为某种灰度? 我打算处理很多不同types的图像,我需要把它们与灰度作比较。 这是我的脚本: var Promise = require("bluebird") , fs = Promise.promisifyAll(require('fs')) , cv = require('./opencv-build/node-opencv/lib/opencv'); var readImage = Promise.promisify(cv.readImage); var ImageSimilarity = Promise.promisify(cv.ImageSimilarity);; var imgdir = __dirname+'/img/'; var img_o = imgdir + 'src/walken.png'; var img_d = imgdir + 'dst/walken.png'; readImage(img_o). then(function(first){ […]

使用node.js调整图像大小

我用node-webkit写了一个小工具。 我selectnode-webkit的一个原因是,将应用程序分发到所有主要平台很容易。 我现在想做的事情是调整位于文件存储上的一堆图像的大小。 我发现大量的包通过ImageMagick做到这一点。 这将需要用户安装ImageMagick,这是不好的… 使用web服务是没有select的。 可以容易地有大约600个图像。 如果没有解决scheme,我将只运行那个任务如果imagemagick安装。

获取一幅图像在另一幅图像中的位置

我有一个显示网站的浏览器截图。 现在我想找出网站(视口)的位置(相对于整个屏幕截图)。 在这个图像中看到一个带有黑色边框的矩形: 在开始image processing之前,我有可能向网站的DOM添加任何东西。 我已经尝试生成QR码,将其添加到视口的左上angular和右下angular,然后使用imagemagick来确定QR码在较大图像中的位置: compare -metric "rmse" -subimage-search -dissimilarity-threshold "0.1" -virtual-pixel "edge" "haystack.png" "needle.png" "results.png" 然而,这需要很长的时间。 事实上,我在40分钟后辞职了。 我使用了QR码,因为通过使用时间戳,我可以确信这张图片不会在网站的其他地方find。 此外,截图中QR码的大小是原始QR码的两倍,但我想这是由于我的Mac屏幕有144dpi。 我正在使用node.js,所以我需要任何可以通过命令行(如imagemagick )执行的东西,以便我可以从节点或直接节点模块执行它。 我有一个优势,就是我可以select想要在更大的图像中search的图像。 我猜测要find的确切知识可能是一个有用的信息来加速过程(但我不知道如何使用这些信息)。

如何在node.js中完成繁重的处理操作

我有一个沉重的数据处理操作,我需要按照10-12的simulatenous请求完成。 我已经阅读了更高级别的并发性Node.js是一个很好的平台,它通过一个非阻塞事件循环来实现它。 我所知道的是,为了查询数据库等事情,我可以将一个事件产生到一个单独的进程(如mongod , mysqld ),然后有一个callback来处理这个进程的结果。 很公平。 但是如果我想要在callback中完成一个沉重的计算。 在这个callback中的代码完全执行之前,是不是会阻止其他的请求呢? 例如,我想处理一个高分辨率的图像和代码,我已经在Javascript本身( no separate过程来做image processing)。 我想实施的方式就像 get_image_from_db(image_id, callback(imageBitMap) { heavy_operation(imageBitMap); // Can take 5 seconds. }); 那个heavy_operation阻止节点接受这5秒的任何请求heavy_operation ? 还是我在想这样做的错误方式呢? 请指导,我是JS新手。 UPDATE 或者可以像我可以处理部分图像,并使事件循环回去采取其他callback,并返回到处理部分图像。 (比如优先事件)。

node.js如何从图像创build缩略图?

我正在使用gm模块。这是我的代码: gm(picture.path).thumb('250', '180', picture.thumb_path, 100, function (error) { if(error) console.log(error); }); 但是结果大小有时是249×180。 我需要250×180

如何获得黑色背景上的白色点的坐标

一些背景: 我正在build造一个AR艺术装置,并且需要跟踪一个人在房间里的移动。 要做到这一点,我已经build立了一个头部有几个红外灯(与扩散器),并有一个摄像头(一个USB摄像头),有一个光学filter,从图像中删除大部分/所有可见光,以及一些调整基本上留给我在黑色背景上的白点的图像。 设置networking摄像头以捕捉房间的边界非常容易,但我不确定如何处理黑白图像以获取每个点的x,y坐标。 示例图像输出:(这是一个模拟,因为我这秒钟没有一个模型,并且还要记住,数据将来自有效的video) 我正在使用的工具 NodeJS进行处理 罗技摄像头的图像捕捉 Google Cardboard for visuals 红外线在聚苯乙烯泡沫球里散发出很好的漫射光点 有任何想法吗?

NodeJS处理远程映像而不下载它

在NodeJS中,我需要创build一个用于远程image processing的API。 使用图像的URL我需要获取所有相关的数据(宽度,高度,文件大小等),然后使用graphicsmagick库来处理它。 问题是,gm总是返回这个错误 {[Error:spawn ENOENT] code:'ENOENT',errno:'ENOENT',syscall:'spawn'} 我使用的代码是 request.get(imageUrl, function (err, res, body) { var buffer = new Buffer(body,'binary'); gm(buffer) .size(function (err, size) { if (!err) { console.log('width = ' + size.width); console.log('height = ' + size.height); } else console.log(err) }); }); 问题是:如何处理图像而不下载?

如何做编程dynamic产品configuration器 – 图像生成器

有一个要求是build立网站非常相似shoesofprey.comdevise师。 他们有至less4到12个不同的属性来准备输出图像,通过鞋型select和基于之前的属性选项select的其他可用属性,这里发生的dynamic图像组合为用户select的属性选项 – 到目前为止,我避难我没有清楚的了解如何或者使用什么平台/技术来达到目的。 我专门为这一项做了更多的研究,并详细了解了他们的网站问题或者他们的优点,甚至没有一个单一的职位提到devise背后的任何技术方面。 正常的图像replace为基础的产品configuration,其中通常JavaScript做的替代和显示用户的基本魔术 – 这就是他们将得到的,并在该客户端必须准备好每一个组合,并与迄今为止各种网站的工作。 在这里,客户确定他们不能做这么多的组合,并且基于他们的需求/商业模式,我也确信 – 每一种组合的手工生成都会让许多devise师花费一生的时间,而且这种组合不会发生。 如果对Node.js或ROR或基于Java的应用程序的解决scheme的build议 – 它更好,因为我使用这些在中间水平或至less低水平跟进。 客户不希望与任何第三方服务产生这个图像链,他们希望自己的图像build模解决scheme的一个重要的事情。 任何有关这方面的build议都会非常有帮助,并且非常值得赞赏,因为如此多的开发人员在基本项目中遇到了非常类似的问题,至今我还没有find一个可行的方法。