我使用Laravel(5.5)和Backpack。背包包括Cropper jQuery plugin,允许您在上传之前裁剪图像。
我需要在服务器上保存裁剪版本和完整版本的图像。裁剪版本是缩略图,完整版本是放大视图。
默认情况下,Backpack实现仅保存图像的裁剪版本。我保存完整大小的计划是修改Backpack视图以包含一个额外的隐藏字段,该字段将包含完整大小的图像(onsubmit设置隐藏字段的值?)。
我已阅读过Cropper文档,但我不确定哪种方法会以完整尺寸(裁剪前)返回图像数据,如果此数据包含在表单提交中(不要认为它)是)。
我有两个问题:
第二个问题有点模糊,因为我并不确定这个图片上传是如何工作的(在上传之前似乎已经转换为base64,但如果是这样的话会令人惊讶)。
提前致谢。
答案 0 :(得分:1)
我最终解决的问题包括:
在客户端,我在fullImageData
中添加了一个名为resources/view/vendor/backpack/crud/fields/image.blade.php
的隐藏字段。然后我在提交方法上添加了以下JavaScript行作为匿名函数,这些行设置了同一文件中裁剪版本的值(关于第189行):
$ mainImage.cropper('明确&#39); $ mainImage.cropper(' setData',$ mainImage.cropper(' getImageData')) var fullImageURL = $ mainImage.cropper(' getCroppedCanvas')。toDataURL(file.type); $('#fullImageData&#39)。VAL(fullImageURL);
在服务器上,在模型中添加名为fullImageData
的模型属性(具有任何可见性)和setFullImageDataAttribute
mutator以捕获图像数据(并将其保存到文件中) ,最后,将fullImageData
字段添加到模型的$ fillable属性中。
我希望在同样的情况下帮助其他人。