Articles of image processing

AWS Lambda图像已损坏

我遇到了AWS Lambda问题,每隔几次上传,我的resize的图像就会被损坏。 我写了一个脚本,从S3中取出,并将其大小调整为另一个存储桶中的3种大小,主要是使用文件stream。 这里是代码: https://github.com/handonam/AWS-Resizer/blob/493ff10c317e7150d1ac040f54065083963a9c67/createThumbnails.js 您可以看到较大的512px放大文件(resize)以及原始(200px) 另一个resize为120px 我的lambda消费看起来大部分完全正常。 它设置在768mb内存和20s超时的同一地区。 这些脚本使用90 / 768mb的小图像(如500px宽)执行大约2秒,或者在更大的图像(如2000px宽)上执行14秒@ 648 / 768mb。 但即使是一个小图像,resize也会影响到我。 如果我放弃文件stream,只是写入缓冲区(就像aws示例一样 ),那么image processing将以缓冲区结束,而lambda将耗尽太多的资源。 任何指导表示赞赏!

hough变换 – javascript – node.js

所以,我试图实现霍夫变换,这个版本是基于次要属性的1维(它的所有变暗减less到1个昏暗的优化)版本。 封闭的是我的代码,具有示例图像…input和输出。 明显的问题是我做错了什么。 我翻了三倍检查我的逻辑和代码,它看起来也很好,我的参数。 但显然我错过了什么。 注意,红色像素应该是椭圆中心,而蓝色像素是要去除的边缘(属于符合math方程的椭圆)。 另外,我不感兴趣的openCV / matlab / ocatve /等..使用(没有任何反对他们)。 非常感谢你! var fs = require("fs"), Canvas = require("canvas"), Image = Canvas.Image; var LEAST_REQUIRED_DISTANCE = 40, // LEAST required distance between 2 points , lets say smallest ellipse minor LEAST_REQUIRED_ELLIPSES = 6, // number of found ellipse arr_accum = [], arr_edges = [], edges_canvas, […]

用Node.js在现有的PNG上写文本

我试图创build一个简单的dynamic徽章(PNG)embedded到静态页面,让我知道我的应用程序的状态。 我想这样使用现有的PNG图像,并用Node.js写上一些文字。 我发现很多库,但他们都使用Imagemagick或开罗作为本地依赖,我想避免在服务器上安装任何东西。 然后我发现了lwip,但是我不能真正理解如何在它的图像上写文本。 我能怎么做?

用javascript创buildInstagram-esquefilter?

我可以使用JavaScript创buildInstagram-esquefilter吗? 图像可以被处理客户端或服务器端(node.js) 我可以用css覆盖一些PNG和盒子阴影以获得有限的类似效果,但是我想知道是否有任何可以在js中像这样处理图像的东西。 谢谢!

NodeJSimage processing/分析可能吗?

我在服务器端运行NodeJS ,我正在尝试做一些自动化的image processing来确定图像的“基本颜色”。 以下是我想要做的步骤: 拍摄一个图像(在远程服务器上,通过URL传递)并获取其尺寸 使用尺寸来计算图像的中心 围绕中心点绘制一个10px x 50px(WxL)的矩形 获取每个像素的RGB值(每个图像500个) 输出像素的平均值 我知道这样的事情可能在PHP中,但我想使用节点是可能的。 我已经看过关于使用Node-imagick进行基本处理(如resize和裁剪)的教程,但不知道从哪里开始进行更高级的分析。 问题 (一)这是可能的节点? (b)哪些图书馆允许我这样做?

上传时错误的图像方向 – Amazon S3

我让用户使用Multer-S3将多个图像直接上传到Amazon-S3,然后通过循环在前端显示这些图像。 所有的作品完美。 但是,当通过手机上传图片(在iPhone或Android上拍摄的图片)时,手机的方向是正确的,但在桌面上没有正确的方向。 主要问题。 这是由于我相信图像的EXIF数据。 看起来像ImageMagick或Kraken JS https://kraken.io/docs/storage-s3可能是一种解决方法,但对于我的生活,我无法弄清楚如何以我上传和显示图像的方式来实现如下所示。 如何更改我的代码以自动定位图像? 注意:它必须适用于多个图像 。 谢谢你的帮助! 下面是我让用户直接向Amazon-S3上传多个图片的方式: aws.config.update({ secretAccessKey: 'AccessKey', accessKeyId: 'KeyID', region: 'us-east-2' }); var s3 = new aws.S3(); var storage = multerS3({ limits : { files: 25 }, s3: s3, bucket: 'files', key: function (req, file, cb) { var fileExtension = file.originalname.split(".")[1]; var path = "uploads/" + […]

纯JavaScriptimage processing

我有一个用例,我想创build(a)Node应用程序(b)执行基本的图像操作(PNGresize和裁剪),但(c)我不能像本地库,GraphicsMagick,ImageMagick,PhantonJS, Inkscape等 这一切都必须在纯JavaScript中完成。 鉴于我想要做的操作简单(只是PNGresize和裁剪),这似乎不可能。 但是,我找不到最终没有外部或本地依赖的裁剪/resize的库。 这样一个真正纯粹的JavaScript库是否存在作物/resize? 如果我必须自己做这个,纯粹用JavaScript来实现这个有多困难? 我应该从哪里开始? 另外,是否有一个合适的C函数,我可以使用emscripten编译,例如?

如何使用Node.js比较两个图像

我正在寻找一种方法来比较两个图像,看看他们是多么相似。 使用谷歌search会产生大量的image processing结果(裁剪,重新resize等),但没有什么会做近似的图像比较。 有一个Node.js库,但它是0.0.1版本,依赖于各种第三方系统包,所以不稳定或便携。 沿着这些线路的东西: var imgComparator = require('some-awesome-image-comparator-module'); // result would be between 1.0 and 0.0, where 1.0 would mean exact match var result = imgComparator.compare('/path/to/image/1.png', '/path/to/image/2.png');

nodejs native c ++ npm模块内存错误,cairoimage processing

我一直在node-canvas上对TJ进行窃听,关于我正在编写和维护的一个节点模块的分支上加速的代码。 我发现Canvas.toBuffer()是要杀死我们的pipe道资源,并创build了一个替代scheme,只需从Canvas转换为图像,而无需通过PNG缓冲区/媒体url。 问题是cairo是一个神秘的野兽,并且在节点模块内部分配的内存还有一个额外的关注点,因为不能被v8版本获得GC'd。 我已经将正确的HandleScopes添加到访问V8数据的所有必需的函数中。 我能够在我的Mac安装程序(6.18)上testingCanvas.loadImage(image)方法数千次,以及在运行相同版本节点的ubuntu / production服务器上进行独立testing。 但是,当代码作为后台进程/服务器运行,并由Gearman协调时,我得到一些“有趣”的内存/段错误。 另外,我无法调用在node-canvas中定义的类中任何不在头文件中内联的方法 。 作为一个侧面问题创build其他节点模块可以依赖的常见本地源代码包的最佳方式是什么? 我已经尝试重新创build问题并使用gdb,node_g和所有使用符号和debugging标志构build的节点模块来运行它。 但是这个错误在源代码之外的一个lib中可以得到一个堆栈跟踪。 这里是我调用loadImageData的地方,虽然它在各种条件下在本地运行,但在我们的生产环境中,当仔细地将其放在一个框架服务器中时,它似乎是导致段错误(昨天花了一天的时间尝试gdb node_g我们的服务器代码,框架服务器被齿轮人拉开… TL; DR没有得到根本原因堆栈跟踪) https://github.com/victusfate/node-canvas/blob/master/src/Canvas.cc#L497 Handle<Value> Canvas::LoadImage(const Arguments &args) { HandleScope scope; LogStream mout(LOG_DEBUG,"node-canvas.paint.ccode.Canvas.LoadImage"); mout << "Canvas::LoadImage top " << LogStream::endl; Canvas *canvas = ObjectWrap::Unwrap<Canvas>(args.This()); if (args.Length() < 1) { mout << "Canvas::LoadImage Error requires one argument of Image type " << […]