gpt4 book ai didi

javascript - 如何在使用 Angular-file-upload 上传之前修复 EXIF 方向

转载 作者:行者123 更新时间:2023-11-28 06:22:13 24 4
gpt4 key购买 nike

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

我在应用程序的多个 View 中使用此指令,因为时间原因更改为 ng-file-upload 等另一个指令并不是最佳选择。

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

最佳答案

现在我解决了。

这就是我所做的。

这是 html 中的代码:

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

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

然后在 Controller 中:

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.js , ng-img-crop.js[ngImgCrop]在 app.js 中

就是这样。

希望对你有帮助。

关于javascript - 如何在使用 Angular-file-upload 上传之前修复 EXIF 方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35422634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com