Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript裁剪(croppie)图像质量差_Javascript_Canvas - Fatal编程技术网

javascript裁剪(croppie)图像质量差

javascript裁剪(croppie)图像质量差,javascript,canvas,Javascript,Canvas,我正在尝试使用Croppie在上传到服务器之前用Javascript裁剪图像。它工作得很好,用户界面也很好。然而,在玩演示时,我注意到结果图像的质量比原始图像差得多——我使用的是1920x1080图像 有解决办法吗 我也会接受其他库的建议:)如果您正在缩放或旋转图像,可能会出现一些退化,这是不可避免的 但是如果你只是从原始图像中裁剪一块 默认情况下,将以视口大小保存裁剪后的图像 对于较大的1920x1080图像,视口大小(可能)小于原始图像大小,因此Croppie会降低导出图像的像素密度。像素越

我正在尝试使用Croppie在上传到服务器之前用Javascript裁剪图像。它工作得很好,用户界面也很好。然而,在玩演示时,我注意到结果图像的质量比原始图像差得多——我使用的是1920x1080图像

有解决办法吗


我也会接受其他库的建议:)

如果您正在缩放或旋转图像,可能会出现一些退化,这是不可避免的

但是如果你只是从原始图像中裁剪一块

默认情况下,将以视口大小保存裁剪后的图像

对于较大的1920x1080图像,视口大小(可能)小于原始图像大小,因此Croppie会降低导出图像的像素密度。像素越少=质量越差

修复方法是使用Croppie的方法以原始(更大)大小保存裁剪后的图像:


为我工作


另外,该库非常酷,但需要重写。

默认情况下,使用视口大小裁剪,以减少生成图像的像素。 有两种方法可以解决这个问题

  • 为最终结果确定一些大小,即

    var imageSize = {
            width: 900,
            height: 900,
            type: 'square'
    };
    
    并将此结果用于裁剪结果

        $uploadCrop.croppie('result', {
            type: "canvas",
            size: imageSize,
            format: "png", 
            quality: 1
        }).then(function (resp) { )};
    
  • 你可以使用当前图像的大小,如果它是好的质量,但如果它是非常好的质量,那么它将使更大的当前图像的大小,即

        $uploadCrop.croppie('result', {
            type: "canvas", 
            size: "original", 
            format: "png", 
            quality: 1
        }).then(function (resp) { )};
    

  • 您可以调整画布输出的质量,但不确定crappie是否允许。。。每次压缩jpeg时都会有一些损失,尽管每次100%不会损失太多…嘿,如果我必须将图像保存在原始尺寸中,那么裁剪图像有什么意义?@ITSagar您也可以将“原始”替换为{宽度:960,高度:540}或任何您想要的尺寸
        $uploadCrop.croppie('result', {
            type: "canvas",
            size: imageSize,
            format: "png", 
            quality: 1
        }).then(function (resp) { )};
    
        $uploadCrop.croppie('result', {
            type: "canvas", 
            size: "original", 
            format: "png", 
            quality: 1
        }).then(function (resp) { )};