jquery 裁剪插件尺寸的角度指令在移动设备上已关闭

Posted

技术标签:

【中文标题】jquery 裁剪插件尺寸的角度指令在移动设备上已关闭【英文标题】:angular directive of jquery crop plugin dimensions are off on mobile devices 【发布时间】:2015-02-05 06:45:43 【问题描述】:

我已经在 angularJS、Guillotine (https://github.com/matiasgagliano/guillotine) 和 Image Cropper (http://fengyuanchen.github.io/cropper/) 中实现了 2 个 jquery crop 插件作为自定义指令。

两者都可以在桌面上正常检索裁剪尺寸(x、y、宽度、高度),但在移动设备上,虽然裁剪尺寸在技术上是正确的,但图像的大小并未考虑在内。因此,裁剪结果只是所需裁剪区域的一小部分。

我该如何解决这个问题?

更新:: 我意识到这很可能是服务器问题。出于某种原因,虽然服务器正确设置了与在桌面上裁剪的原始照片的比例,但它不会对从移动设备加载的图像执行此操作。

这是(为简洁起见而编辑的)角度指令,适用于 Guillotine。

    (function () 
        angular.module('Crop').directive('skCrop', ['$sce', '$route', '$cookieStore', 'putService', 'picService', 'deleteService', function($sce, $route, $cookieStore, putService, picService, deleteService) 
            return 
            restrict: 'E',
            templateUrl: '/pic/crop.html',
            scope: 
                pic: '@',
            ,
            link: function( scope, el, atts) 
                var picture = angular.element('#picture');
                var cropDims = ;

                scope.crop = function() 
                    var data =angular.element(el).find('img').guillotine('getData');
                    cropDims.x = data.x;
                    cropDims.y = data.y;
                    cropDims.width = data.w;
                    cropDims.height = data.h;
                    // $http PUT to server here
                ;


                scope.$watch('pic', function () 
                    picture[0].onload = function () 
                        width = this.width;
                        height = this.height;
                        if (width > 0) 
                            picture.guillotine(
                                width: 500,
                                height: 500    
                            ); // end picture.guillotine
                        


                    ;// end picture.onload

                ); // end scope.$watch


             // end link
        ; // end return

    ]);


)();

html片段:

    <sk-crop pic="obj.user.picfull">
    </sk-crop>

skCrop 模板:

<section>
  <div class="img-container">
    <img id="picture" ng-src="trustSrc(pic)"/>
  </div>
  <div class="form-group">
    <button class="btn btn-default" ng-click="clear()">Remove</button>
    <button class="btn btn-primary" ng-click="crop()">Save</button>
  </div>
</section>

css:

    .img-container 
      width: 100%;
      height: auto;
      max-width: 500px;
      margin-left: 0 auto;
      margin-right: 0 auto;
      display: block;
    

【问题讨论】:

【参考方案1】:

您能否发布您在服务器上获得的数据并描述其使用方式?可能是服务器端裁剪器误解了比例。

我不使用 Angular,但请记住,如果您更改目标图像的源,则应删除该插件并重新初始化该插件。因此,如果您将初始化程序放在观察者中,如果图像 src 发生变化,您可能会安装插件的多个实例。

【讨论】:

发布到服务器的数据是作为 JSON 对象的裁剪尺寸。 code "x":95.99999999999999,"y":256,"width":768.0000000000001,"height":768.0000000000001 code.我不确定服务器如何使用数据。我会问! 那里缺少 scaleangle,Guillotine 的输出(通过 getData)类似于: scale: 1.4, angle: 270, x: 10, y: 20, w: 400, h: 300 .不应用 scale 应该会导致您没有考虑图像大小的问题。

以上是关于jquery 裁剪插件尺寸的角度指令在移动设备上已关闭的主要内容,如果未能解决你的问题,请参考以下文章

利用 jQuery-photoClip插件 实现移动端裁剪功能并以Blob对象上传

JS:图像上传实时操作、缩放、尺寸和裁剪

uniapp微信小程序图片裁剪插件,支持自定义尺寸定点等比例缩放拖动图片翻转剪切圆形/圆角图片定制样式

cropper.js图片裁剪

jQuery 图片裁剪插件 Jcrop

jQuery插件分享Cropper——一个简单方便的图片裁剪插件