当前位置: 首页 > 知识库问答 >
问题:

Dropzone调整大小功能

周弘盛
2023-03-14

我已经实现了一个Dropzone页面使用http://www.dropzonejs.com/

我在调整大小功能上遇到了麻烦。如果我的图像宽高比错误,它们会不断被裁剪。

我想知道两件事:

  1. 我可以将dropzone配置为将图片(而不是拉伸或裁剪)放入预览元素中吗
  2. 我是否可以在预览被删除后调整预览的大小(即查看小型、中型或大型预览)

我已经通过调整css实现了2,但我想知道是否有更好的方法使用dropzone代码。

如果有人有一个1的例子,那么它将非常有用。谢谢,马特。

共有3个答案

澹台鸿熙
2023-03-14

不幸的是,没有办法在配置中指定一个无裁剪选项,但我通过修改dropzone成功地实现了这一点。js在下面的方式,我希望它有帮助。

这种修改将保留固定高度的纵横比(您可以将其更改为固定宽度)。

第1173行更换:

resizeInfo.trgWidth = _this.options.thumbnailWidth;

有了这个:

resizeInfo.trgWidth = img.width * (_this.options.thumbnailHeight / img.height);

并在第1182行中替换:

ctx.drawImage(img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);

有了这个:

ctx.drawImage(img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, img.width, img.height, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
申查猛
2023-03-14

是的,你可以。要获得未修剪的缩略图,您需要做两件事:

>

  • 在初始化选项中指定thumnailWidth和thumnailHeight。如果您想要固定的高度,请传递null作为thumnailWidth的值,如果您想要固定的宽度,则反之亦然。
  • 如下所示覆盖dropzone css

    . dropzone. dz-预览. dz-图像{宽度:自动!重要;高度:自动!重要;}

  • 谢海阳
    2023-03-14

    实际上,只有在明确指定了thumbnailWidththumbnailHeight这两个选项的情况下,预览才会出现交叉。否则,如果用户只指定一个或不指定缩略图尺寸,则整个图像将根据指定的选项thumbnailWidththumbnailHeight按比例调整大小。

    例如,使用1200x800图像源:

    // Resized preview (400x267)
    var dp = new Dropzone(document.getElementById('dp'), {
        thumbnailWidth: 400,
        thumbnailHeight: null
    }
    
    // Resized preview (600x400)
    var dp = new Dropzone(document.getElementById('dp'), {
        thumbnailWidth: null,
        thumbnailHeight: 400,
    }
    
    // Croped preview (400x400)
    var dp = new Dropzone(document.getElementById('dp'), {
        thumbnailWidth: 400,
        thumbnailHeight: 400,
    }
    

    但是,如果您不知道源图像的比例,需要使预览适合大小的div,则使用dropzone的resize功能。js。它必须返回具有多个属性的对象,如文档中所述。以下是根据缩略图尺寸调整预览大小的示例:

    var dp = new Dropzone(document.getElementById('myDropzone'), {
    
        // Your dropzone options here...
    
        thumbnailWidth: 400,
        thumbnailHeight: 400,
        resize: function(file) {
            var resizeInfo = {
                srcX: 0,
                srcY: 0,
                trgX: 0,
                trgY: 0,
                srcWidth: file.width,
                srcHeight: file.height,
                trgWidth: this.options.thumbnailWidth,
                trgHeight: this.options.thumbnailHeight
            };
    
            return resizeInfo;
        }
    });
    

    当然,您可以根据您的源图像尺寸、您的div尺寸或任何您想要的尺寸来计算trgWidthtrgHeight,以使预览看起来像您想要的。

     类似资料:
    • 有dropzone的调整大小功能的例子吗。js?我真的不明白它是如何工作的,它说:“Resize是被调用来创建调整大小信息的函数。它将文件作为第一个参数,并且必须返回一个包含srcX、srcY、srcWidth和srcHeight的对象,对于trg*。这些值将被ctx.drawImage()使用。” 但是我真的不知道如何使用它。到目前为止,我正在服务器端调整图像的大小,但是我想在客户端这样做,我认

    • 我想集成Dropzone。js具有客户端图像大小调整功能。我知道有一个函数可以调整缩略图的大小,但我想在上传之前创建一个函数来调整主图像的大小。有人能帮我吗?

    • 我正在尝试调整缩略图中的图像大小,以固定框的大小。我试过这个: 这是原始图像的外观:http://files.parsetfss.com/12917a88-ac80-4e5e-a009-fc634161b79c/tfss-6c59b59f-8f57-4610-966e-31bbc203707b-samsung-galaxy-note-4-7290-002.jpg 我也试过: 但是没有任何变化,没有

    • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

    • 问题内容: 我一直试图(徒劳地)建立一个页面,当我更改窗口大小时,其元素将重新调整大小。我可以在CSS中使用它来处理图像,但是没有问题,但是我似乎无法在文本上完成相同的操作,而且我不确定在CSS中是否有可能。而且我似乎找不到能完成此任务的jQuery脚本。 当用户调整窗口大小时,我实质上希望页面能够动态流畅地缩放,而无需用户调用页面缩放。通过css在我的img div上这可以正常工作,但对于文本则

    • 问题内容: 下面的代码调整位图的大小并保持宽高比。我想知道是否有一种更有效的大小调整方法,因为我想到了我正在编写android API中已经可用的代码。 问题答案: 使用方法:)