Fabric.js画布图像抗锯齿 [英] Fabric.js canvas image antialiasing

查看:1789
本文介绍了Fabric.js画布图像抗锯齿的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有办法使用fabric.js
添加到画布的抗锯齿图像我无法使用scaleToHeight函数执行此操作。我在结构库中找不到任何合适的选项。

Is there a way to antialiase image that added to canvas using fabric.js I'm having trouble to do this with scaleToHeight function. I couldn't find any suitable option in fabric library.

var canvas = new fabric.Canvas('canvas');
var url = 'https://grafikoan.files.wordpress.com/2012/10/spheres-grafic-design-grafikoan-hd-300-p-2.png';
fabric.Image.fromURL(url, function (oImg) {
	oImg.scaleToHeight(canvas.getHeight());
  canvas.add(oImg);
  canvas.renderAll();
});

<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="canvas" width=400 height=300></canvas>

正如你所看到的,这张图片看起来很锯齿。

As you can see this image looks jagged.

推荐答案

fabricjs有自己的调整大小过滤以避免锯齿。
调整大小过滤器,类型为sliceHack是最快/最好的结果。
如果您不需要动态过滤调整大小,您还可以使用lanzcos过滤,双线性,快速隐士。

fabricjs has its own resize filtering to avoid jaggies. Resize filter, with type "sliceHack" is the fastest/good result one. If you do not need dynamic filtering on resize you can also use lanzcos filtering, bilinear, fast hermit.

var canvas = new fabric.Canvas('canvas');
var url = 'https://grafikoan.files.wordpress.com/2012/10/spheres-grafic-design-grafikoan-hd-300-p-2.png';
fabric.Image.fromURL(url, function (oImg) {
    var scaling = canvas.getHeight() / oImg.height;
    oImg.filters.push(new fabric.Image.filters.Resize({
        resizeType: 'sliceHack', scaleX: scaling , scaleY: scaling 
    }));
  canvas.add(oImg);
  oImg.applyFilters(canvas.renderAll.bind(canvas));  
},{ crossOrigin: 'Anonymous' });

body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }

<script src="http://www.deltalink.it/andreab/fabric/fabric.js"></script>
<canvas id="canvas" width=400 height=300></canvas>

请查看此链接以获取没有CoR问题的工作示例。

Please check this link for a working example with no CoR issue.

http://www.deltalink.it/andreab/fabric/resize。 html

比较normale图像和sliceHack图像,一旦调整大小,过滤器就会启动。

Compare normale image and sliceHack image, the filter will kick in once you resize.

更多示例: https://github.com/kangax/fabric.js/issues/ 1741

这篇关于Fabric.js画布图像抗锯齿的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆