尝试使用 Jcrop 和使用 scala Scrimage lib 调整服务器端图像大小

Posted

技术标签:

【中文标题】尝试使用 Jcrop 和使用 scala Scrimage lib 调整服务器端图像大小【英文标题】:Trying to make use of Jcrop and serverside image resizing with scala Scrimage lib 【发布时间】:2014-01-23 14:43:51 【问题描述】:

我正在尝试将 jcropscrimage 结合起来,但我无法理解 scimage 的文档。 用户上传图片。上传完成后,用户可以选择一个固定的 使用 Jcrop 进行裁剪的区域:

upload.js

      $(function () 
            $('#fileupload').fileupload(
                dataType: 'json',                    
                progress: function (e, data) 
                    var progress = parseInt(data.loaded / data.total * 100, 10);
                    $("#progress").find(".progress-bar").css(
                        "width",
                        progress + "%"
                    );
                ,
                done: function (e, data) 
                    $("#cropArea").empty();
                    var cropWidth = 210;
                    var cropHeight = 144;
                    if(data.result.status == 200) 
                        var myImage = $("<img></img>", 
                            src: data.result.link
                        ).appendTo('#cropArea');
                        var c = myImage.Jcrop(
                            allowResize: false,
                            allowSelect: false,
                            setSelect:[0,0,cropWidth,cropHeight],
                            onSelect: showCoords
                        );
                    
                
            );
        );

示例:

当用户满意时,坐标将被发布到服务器上,魔法应该发生的地方。

控制器:

def uploadFile = Action(multipartFormDataAsBytes)  request =>
    val result = request.body.files.map 
      case FilePart(key, filename, contentType, bytes) => 
        val coords = request.body.dataParts.get("coords")
        val bais = new ByteArrayInputStream(bytes)
        Image(bais).resize(magic stuff with coords)

        Ok("works")
      
    
    result(0)
  

如果我阅读 docs 的 scrimageresize

将画布调整为给定尺寸。这不会缩放 图像,但只是改变了画布的尺寸, 图像是坐着。指定更大的尺寸将用 背景颜色并指定较小的尺寸将裁剪图像。 这是大多数人想到crop时想要的操作。

但是当尝试使用输入流 Image(is).resize() 实现调整大小时,我不确定我应该如何做到这一点。调整大小需要一个比例因子,位置和颜色......我想我应该 用我从 jcrop 获得的坐标填充位置??我该如何处理 scaleFactor?有人有一个很好的例子来说明如何做到这一点吗?

感谢您提供两个很棒的库!

【问题讨论】:

【参考方案1】:

子图像是你想要的。这使您可以指定坐标而不是偏移量。

这么简单,

val image = // original
val resized = image.subimage(x,y,w,h) // you'll get these from jcrop somehow

【讨论】:

太棒了!但是用 image.subimage(x1,y1,w,h) 升级你的答案,我会把它标记为正确的!

以上是关于尝试使用 Jcrop 和使用 scala Scrimage lib 调整服务器端图像大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 jcrop 和 java 裁剪图像

使用 jcrop 和 CodeIgniter 裁剪图像

使用 Paperclip 和 Jcrop 时出现 ImageMagick 的问题

Asp.net, Jcrop 价值问题

在创建图像之前使用 jCrop 和 cloudinary through rails 4 进行裁剪

JCrop - 功能未实现