javascript - 使用 Fabricjs 在 Canvas 中图像变得扭曲和模糊

标签 javascript jquery canvas fabricjs

我正在上传图像,然后使用fabricjs 将其显示在 Canvas 中。上传的图片没问题。但是当我将其加载到 Canvas 中时,它会变形且模糊。 这是我用来在 Canvas 中加载图像的代码。

$("#canvas_area").append('<canvas id="c"></canvas>');
var canvas = new fabric.Canvas('c');
canvas.setDimensions({
    width: '100%',
    height: '100%'
 }, {
    cssOnly: true
 });
 var imgElement = response.uploaded_file;
 fabric.Image.fromURL(imgElement, function (img) {
     img.set({
         borderColor: 'red',
         cornerColor: 'green',
         cornerSize: 6,
         transparentCorners: false
    });
    if (img.height > img.width) {
        img.scaleToHeight(80);
    }
    if (img.height < img.width) {
        img.scaleToWidth(120);
    }
    if (img.height == img.width) {
        img.height = 100;
        img.width = 200;
    }
    img.set('left', 10);
    img.set('top', 10);
    img.setCoords();
    canvas.add(img);
});

它还将方形图像(图像宽度==图像高度)调整为矩形图像。

任何帮助将不胜感激。谢谢

最佳答案

您的代码设置在第三个 if 中:

if (img.height == img.width) {
    img.height = 100;
    img.width = 200;
}

因此任何方形 (1:1) 图像都会扭曲为 2:1 图像。

我会这样写调整大小:

if (img.height > img.width) {
    img.scaleToHeight(80);
}
if (img.height <= img.width) { //include square images here
    img.scaleToWidth(120);
}

关于javascript - 使用 Fabricjs 在 Canvas 中图像变得扭曲和模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30389687/

相关文章:

javascript - Qlikview + 扩展。如何使用JS更改sheet

javascript - 手动将 HTML 代码写入网页更快,还是使用 jQuery(或普通的 Javascript)更快?

javascript - 增加数组数量而不重置它 (Javascript/Canvas)

javascript - Canvas 确定平移边界,独立于屏幕分辨率和 Canvas 调整大小

javascript - 无法通过 iframe 添加 cookie

javascript - 使用 google api 时日期选择器不工作

javascript - 在 React Native 中单击按钮时显示 PickerIOS

javascript - 使用scaleBand()在轴刻度中的文本值

php - 使用 JQuery 将对象添加到 JSON 文件

javascript - 如何从转换后的楼层 map 中正确计算坐标?