首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用angular-file-upload在上传前固定EXIF方向

如何使用angular-file-upload在上传前固定EXIF方向
EN

Stack Overflow用户
提问于 2016-02-16 10:30:20
回答 1查看 2.9K关注 0票数 2

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

我在我的应用程序上的几个视图中使用了这个指令,因为time reazon更改为另一个像ng-file-upload不是最好的选择。

还有一些其他的指令可以解决这个问题,比如ng-file-upload,但是我想知道如何通过onBeforeUploadItem事件来修复这个问题。

EN

回答 1

Stack Overflow用户

发布于 2016-03-02 18:18:43

现在我解决了这个问题。

这是我要做的。

以下是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 = "";

代码语言:javascript
复制
    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});
    };`

然后,在上传之前:

代码语言:javascript
复制
uploader.onBeforeUploadItem = function(item) {
        $log.debug('onBeforeUploadItem', item);

        item._file = $scope.rotatedFile;
    };

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

就是这样。

我希望它能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35422634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档