Tag: png

使用Node.js(和NPM包'psd')parsingAdobe PSD文件,以编程方式replace图像层,然后保存/呈现为PNG

对于一个项目,我需要parsingAdobe Photoshop PSD文件 ,以编程方式查找和replace图像层,然后将其保存回PSD文件和/或导出为PNG(或JPEG)。 我没有太多的Adobe Photoshop经验,但我认为这些types的图层被称为“智能图层”。 用例: 呈现样机预览图像 用户将图像上传到节点HTTP服务器 用PSD上传的图片replace图层(图片填充图层) 呈现为PNG / JPEG并写入HTTP响应 对于模型模板,replace层在x和y上是3d倾斜的。 我已经包含一个图像来说明这是什么意思。 将来会创build更多的模型模板,这就是为什么我认为用一个常量值来标记replace层是实现这一点的方法。 模板文件: 上传的图片: 最终渲染的图像 我不需要帮助HTTP服务器/authentication等,这部分是微不足道的。 我只是在寻找一种方法来取代图像层。 PSD文件是/将被定制为这个特定的项目。 要根据图层名称(标签)来标识要replace的图层是可接受的实现。 我已经看过几个NPM软件包来完成这项工作,但是无法获得一个正常的原型。 这个包似乎是最有前途的。 https://www.npmjs.com/package/psd 我目前有以下代码: /* mockup.js */ var PSD = require('psd') var psd = PSD.fromFile("mockup.psd") var fs = require('fs') psd.parse() /* For easier reference */ var replacementLayer, file, fileBuffer let tree = […]

如何使用Node.js createReadStream和createWriteStream编写多个文件

好的,这里是这个代码的总体目标。 我正在使用TinyPNG的API来压缩png文件的文件夹。 我有一个名为filename.png的文件的input文件夹。 此代码将文件名的目录读取到数组文件中,然后为要发送到API的文件创build读取和写入stream,进行处理,然后返回,以便将其写入输出文件夹中的文件。 我知道这个代码对于一个文件是有效的,但是不止如此,抛出了一个写完之后的exception,因为pipe道在第一个文件后自动closures。 我试图设置input和输出作为数组,只是引发另一个exception。 任何提示如何设置多个读取和写入stream将是真棒和非常有用的每个人:)。 当前代码: var fs = require('fs'); var inputFolder = "input/"; var outputFolder = "output/"; var https = require("https"); var key = "GETYOUROWNFREEONEFROMTINYPNG.ORG"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; var options = require("url").parse("https://api.tinypng.com/shrink"); options.auth = "api:" + key; options.method = "POST"; console.log("Reading files…"); fs.readdir("./input", function (err, files) { if (err) throw err; console.log(files.length […]

检查透明度,GraphicsMagick node.js

我正在制作一个用户可以上传图片的代码。 图像转换GraphicsMagick并上传到我们的云。 但是,如果非透明图像转换为JPG而不是透明图像的PNG,那将是最好的。 如何检查图像是否包含GraphicsMagick中的Alpha通道?

在Node.js中将PNG从GET请求转换为可读stream

我正在尝试制作一个可以发送猫照片的Facebook聊天机器人。 我使用RESTful API来获取猫图片。 他们是原始PNG返回。 接下来最后一步是将该图像转换为可读stream,以便Facebook Chat API可以将其作为附件发送。 我使用request.js来抓取图像。 请求的文档只提到保存图像作为文件和读取文件到stream.Readable 。 我不知道是否有办法绕过这个临时文件,并将图像直接传输到Facebook Chat API。 这是我的代码到目前为止: var request = require("request"); var stream = require("stream"); module.exports = function getCatPicture(api, threadID, body) { var options = { url: 'http://thecatapi.com/api/images/get?type=png', encoding: 'base64' } var picStream = new stream.Readable; request.get(options, function (error, response, body) { picStream.push(body, 'base64'); var catPic = { […]

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){ […]

GraphicsMagick用于Node.js(GM模块)的性能

使用GM npm模块,我发现GraphicsMagick对Node.js的性能令人惊讶。 我有一个简单的16像素X 16像素icon16.png(320字节)。 我简单地把这个PN​​G的缓冲区输出到一个使用GM的新缓冲区(换句话说,我只是调用通用图像而不经过处理就可以find性能问题)。 var timeStart = parseInt(Date.now()); var newBuffer = gm(icon16buffer, 'icon16.png') //.resize(8, 8) .toBuffer(function (err, buffer) { if (err) { next(); } else { console.log(parseInt(Date.now()) – timeStart); send(200, buffer); } }); }; 这需要175毫秒(即console.log输出是175)。 为什么这么久? 每次都要从磁盘加载C ++ GraphicsMagick库吗? 注意:我在Joyent上使用SmartOS。

如何检测Node.js中损坏的图像文件?

我正在寻找一些通用库来检查下载的图像是否损坏。 我发现使用ImageMagick的https://www.npmjs.com/package/gm 。 我可以使用ImageMagick中的identify来查找完全破碎的图像(我甚至无法打开)。 但也有部分破碎的图像 – 例如jpeg文件,其中一半的图像是灰色的,并且这些图像没有被标记为由gm破坏。 如何检查image.js腐败的图像? 谢谢! 编辑: 我想要检测的是没有完全下载的图像。 通过剪切最后n个字节的图像可以达到类似的效果。 我想有可能以编程方式检测它,因为在详细模式下识别commend返回: identify: Premature end of JPEG file broken_example.jpg' @ warning/jpeg.c/JPEGWarningHandler/352. identify: Corrupt JPEG data: premature end of data segment broken_example.jpg' @ warning/jpeg.c/JPEGWarningHandler/352. 例如(不幸imgur会砍掉破碎的图像,所以我不得不上传截图): 破碎的图像

如何检测调色板的PNG文件?

我想有一个函数返回true时候提供一个PNG文件,如下所示: 在呈现“自然”PNG(例如照片)或任何非PNG(仅仅是颜色渐变的PNG)的情况下呈现,如本问题中呈现的那样。 但你有什么尝试? 我什么都没试过。 我有一个或两个想法,比如随机抽样水平和垂直像素条纹,并寻找完美的线性色度变化,但我在这里问,因为我想涉及到HiveMind更好的洞察力,因为我知道大多数问题有一个非常简单的解。 我更喜欢解决scheme是在JavaScript(想像NodeJS与ImageMagick)或PHP(与Imagick)。 也就是说,只要algorithm是稳定的,任何语言都可以。 提前感谢你们

检查图像是否是有效的PNG文件

我有在二进制格式下载图像的麻烦,有时下载的文件是损坏的图像。 所以我需要检查下载的文件是否是一个有效的PNG图像。 我已经尝试过这个库是Is-png ,但它只读取文件的前8个字节,并不考虑整个文件。 所以我需要找一个能检查整个文件是否有效的库。 请提出实现这个最好的方法,也许有一些伟大的工具已经存在。 谢谢

Node.js中的HTML到PNG服务器端

我正在寻找一个图书馆采取PNG,把它放在一些HTML,然后重新呈现为一个PNG。 示例代码: var renderingTool = require('renderingTool'); var newPng = renderingTool.pngoutBuffer('' + '<div style="border-left: 12px solid red">' + '<img src="src="data:image/png;base64,iVBORw0KGgoAAA…" />' + '</div>' ); 这将需要一个PNG图像,在左侧添加一个红色的边框,并重新呈现为一个PNG。 我知道Phantom.js和gm(它使用GraphicsMagick)。 我无法弄清楚如何用幻影和GM做到这一点,即使是16像素×16像素的图像(每幅图像250ms),速度也很慢。 我希望能够做到这一点~10毫秒。 编辑: 注:我编辑了上面的代码,以显示原始图像已经在内存中作为缓冲区(在上面我转换为base64)。 另外,幽灵可以给HTML代码,而不是一个URL? 我看到的所有例子都是用URL,但是给出实际的代码会好很多。