我正在使用图像编辑器,我必须创建一些应用于RaphaelJS图像的像素处理方法。我正在考虑使用Pixastic库进行像素操作。
问题是我无法将RaphaelJS图像链接到Pixastic,因为RaphaelJS创建了一个SVG元素而Pixastic需要一个'img'标记。
我尝试过这样的事情,但没有成功
img = r.image("Assets/test.jpg", 40, 40, 260, 150);
img.node=Pixastic.process(img.node, "desaturate");
答案 0 :(得分:2)
目前还没有一种简单的方法可以做到这一点。如前所述,在许多浏览器中,您可以输出到Canvas然后执行像素级转换,但是从SVG到Canvas的这种转换是破坏性的,因为您已经从保留模式上下文转变为立即模式上下文,因此丢失保留模式API的所有细节,例如能够在各个形状上注册事件监听器,或者具有用于转换单个形状(或形状组)的高级API。
但是,如果您不需要元素级事件处理,您可以查看dojox.gfx库,它提供了一个用于绘制形状的高级,保留模式,SVG启发的API,但是还有一个Canvas后端(VML和Silverlight)。我相信在使用Canvas输出时无法在各个形状上注册事件侦听器,但是您可以在根canvas元素上注册事件处理程序。然后可能可以使用Pixtastic应用转换,但您可能需要稍微破解dojox.gfx Canvas呈现代码。
你也可以研究一下SVG过滤器,它与SVG一样接近像素级光栅图形式操作的本机支持。
我也相信他们目前正在努力将这两个规范结合起来,使这项工作成为可能:http://lists.w3.org/Archives/Public/public-canvas-api/2011AprJun/0117.html
答案 1 :(得分:1)
您可以尝试将svg绘制到本文末尾https://developer.mozilla.org/en/drawing_graphics_with_canvas附近的canvas元素检查。然后将画布输出到基础64编码图像。没有使用RaphaelJS或pixastic我不确定这会有多好用。