【问题标题】:How to fix EXIF orientation on before upload with angular-file-upload如何在使用 angular-file-upload 上传之前修复 EXIF 方向
【发布时间】:2016-05-27 03:30:41
【问题描述】:

我正在使用angular-file-upload 指令上传文件,我对使用苹果设备拍摄的图像或照片有问题,我知道苹果在图像上包含 exif 方向数据以正确在苹果设备上查看,但是当这些图像上传到Web 应用程序的浏览器方向错误。

我在我的应用程序的几个视图中使用此指令,因为时间原因更改为另一个像 ng-file-upload 不是最好的选择。

还有一些其他指令可以解决此问题,例如 ng-file-upload,但我想知道如何使用 angular-file-upload 的 onBeforeUploadItem 事件解决此问题。

【问题讨论】:

    标签: javascript ios angularjs file-upload angular-file-upload


    【解决方案1】:

    现在我解决了。

    这就是我的工作。

    这是html中的代码:

    <input id="upload_button" type="file" nv-file-select="" uploader="uploader" multiple/>

    <img ng-show="uploader.isHTML5" ng-src="{{pic}}" height="100%" />

    然后在控制器中:

    var handleFileSelect = function(evt) { $scope.pic = "";

        var target = evt.dataTransfer || evt.target;
        var file = target && target.files && target.files[0];
        var options = {
            canvas: true
        };
    
        var displayImg = function(img) {
            $scope.$apply(function($scope) {
                $scope.pic = img.toDataURL();
                $scope.rotatedFile = dataURItoBlob($scope.pic);
            });
        };
    
        loadImage.parseMetaData(file, function(data) {
            if (data.exif) {
                options.orientation = data.exif.get('Orientation');
            }
            loadImage(file, displayImg, options);
        });
    
    };
    angular.element(document.querySelector('#upload_button')).on('change', handleFileSelect);
    
    var dataURItoBlob = function(dataURI) {
            var binary = atob(dataURI.split(',')[1]);
            var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
            var array = [];
            for(var i = 0; i < binary.length; i++) {
                array.push(binary.charCodeAt(i));
            }
            return new Blob([new Uint8Array(array)], {type: mimeString});
        };`
    

    然后,在上传之前:

    uploader.onBeforeUploadItem = function(item) {
            $log.debug('onBeforeUploadItem', item);
    
            item._file = $scope.rotatedFile;
        };
    

    你需要loader-image.min.jsng-img-crop.js[ngImgCrop]在app.js中

    就是这样。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 2018-02-06
      • 2015-12-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多