Я применил код, чтобы проверить, действительно ли расширение изображения соответствует содержимому изображения.
Я проверил исходные два значения необработанного изображения и сопоставил его с [0xFF, 0xD8], чтобы определить, является ли оно изображением jog или jpeg.
Работает нормально с изображением jpg ... но не работает для формата JPEG.
Википедия дала одинаковые эти две начальные кодировки для jpeg и jpg.
но для JPEG я получаю [137,80]
$scope.checkContentOfImage=function(file){
var deferred =$q.defer();
var reader = new FileReader();
reader.onloadend = function (e) {
var arr = (new Uint8Array(e.target.result)).subarray(0, 4);
let flag=true;
let pattern=[0xFF, 0xD8];
for(let i=0 ; i< 2; i++){
if(arr[i]!=pattern[i]){
flag=false;
break;
}}
if(flag){
deferred.resolve("success");
}
else{
deferred.reject("not image file");
}
}
reader.onerror=function(){
deferred.reject("failuer in checking content");
}
reader.readAsArrayBuffer(file);
return deferred.promise;
}
Как проверить формат кодирования jpeg? Это нормально работает для JPG