좋아, 문제는 매우 구체적이지만 어디서나 해결책을 찾을 수 없습니다.자바 스크립트 Exif 정보는 html 페이지의 이미지를 처음 클릭 한 후에 만 표시됩니다.
FileReader() API를 사용하여 이미지 폴더를 업로드하는 사이트를 만들고 있는데이 사이트가 표시됩니다. 이미지를 클릭하면 이미지가 최대화되고 exif-js 라이브러리의 EXIF.pretty()를 사용하여 Google지도와 함께 Exif 정보를 표시합니다. 컬렉션으로 돌아가는 "돌아 가기"버튼이 있습니다.
처음으로 그림을 클릭하면 EXIF 정보는 표시되지 않지만 Google지도가 표시 될 수 있습니다. 두 번째로 앞으로 모든 것을 올바르게 표시합니다. 이것은 모든 그림에 일어납니다. 파일이 콘솔의 출력, 제 1 및 제 2 시간으로 모습의이 개 사진이 있습니다
function writeEXIFData(image, EXIFelem) {
var allMetaData = EXIF.pretty(image);
console.log(image);
var allMetaDataAside = document.getElementById(EXIFelem);
var ExifData = document.createElement("div");
ExifData.id = "EXIFData";
allMetaDataAside.appendChild(ExifData);
if (allMetaData !== "") {
ExifData.innerHTML = allMetaData;
} else {
ExifData.innerHTML = "NO DATA AVAILABLE";
}
}
:
이
내가 HTML에 EXIF 쓰기 자바 스크립트의 일부입니다. The second one appears to have more information. But they are the same exact files왜 이런 일이 발생합니까? 동일한 배열에서 똑같은 이미지를 클릭하고 있습니다.
감사합니다.
편집 : Michael Camden : 내가 무엇을 요구하는지 이해하면. 이 반환 블록에 내 API 내부 :
showImage: function (index, elem, EXIFelem) {
document.getElementById(elem).innerHTML = "";
var file = loadedImages[index];
var reader = new FileReader();
reader.onload = (function (file) {
return function (event) {
// Render thumbnail.
var div = document.createElement("div");
div.className = "maximize";
div.innerHTML = ['<img src="', event.target.result, '" title="', encodeURI(file.name), '">'].join('');
document.getElementById(elem).insertBefore(div, null);
};
}(file));
// Read in the image file as a data URL.
reader.readAsDataURL(file);
TIV3446.makePreviousbtn(elem, EXIFelem);
TIV3446.showImageDetailedExifInfo(index, EXIFelem);
TIV3446.showImageDetailedExifWithMap(index, EXIFelem);
}
showImageDetailedExifInfo: function (index, EXIFelem) {
EXIF.getData(loadedImages[index], writeEXIFData(loadedImages[index], EXIFelem));
}
Edit2가 : 내가 보낸 코드가 묻는 있었는지 아마 아니다. 이 또한 있습니다 :
var i;
var file;
var reader;
for (i = 0; i < loadedImages.length; i += 1) {
file = loadedImages[i];
reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function (file, index) {
return function (event) {
// Render thumbnail.
var div = document.createElement("div");
div.className = "tile";
div.addEventListener("click", function() {TIV3446.showImage(index, elem, EXIFelem);});
div.innerHTML = ['<img src="', event.target.result, '" title="', encodeURI(file.name), '">', '<div class="info">', encodeURI(file.name).slice(0, -4)].join('');
document.getElementById(elem).insertBefore(div, null);
};
}(file, i));
// Read in the image file as a data URL.
reader.readAsDataURL(file);
}
당신이 EXIF 정보를 수집하기 위해 클릭 처리기에 대한 코드를 제공 할 수
은 다음과 같이 작성해야합니까? EXIF 데이터를 수집하는 것은 비동기 프로세스이므로 동기식으로 사용하고 있지만 다른 코드가 없으면 확신 할 수 없습니다. –
내 게시물을 편집 했으므로 알림을 받을지 모르겠습니다. – antwnis4
당신은'console.log (image);'대신 'console.log (allMetaData);'행을 추가하고 우리 둘 모두의 결과를 공유 할 수 있습니까? – EhsanT