IOS6이 출시되었으며 사진 업로드를 테스트 해 왔습니다.IOS6 및 Safari 사진 업로드 - 파일 API + 캔버스 + jQuery Ajax 비동기식으로 파일 업로드 및 크기 조정
잘 작동하지만 3G를 초과하는 큰 이미지의 경우 예상대로 느립니다.
File API 및 Canvas 덕분에 JavaScript를 사용하여 이미지의 크기를 조정할 수 있습니다. 업로드하기 전에 이미지의 크기를 조정하면 업로드 속도가 빨라지므로 빠른 사용자 경험을 제공 할 수 있기를 바랍니다. 스마트 폰 프로세서가 네트워크 속도보다 기하 급수적으로 빠르게 향상되면서 나는이 솔루션이 승자라고 믿습니다.
니콜라스 이미지 크기 조정을위한 우수한 솔루션을 제공하고있다 :
는 그러나, 나는 jQuery의 아약스를 구현하는 힘든 시간을 보내고 있어요. 이 코드는 IOS6 이후의 모바일 웹 애플리케이션 개발에 매우 유용하기 때문에 조언이나 도움을 받으실 수 있습니다.
var fileType = file.type,
reader = new FileReader();
reader.onloadend = function() {
var image = new Image();
image.src = reader.result;
image.onload = function() {
//Detect image size
var maxWidth = 960,
maxHeight = 960,
imageWidth = image.width,
imageHeight = image.height;
if (imageWidth > imageHeight) {
if (imageWidth > maxWidth) {
imageHeight *= maxWidth/imageWidth;
imageWidth = maxWidth;
}
} else {
if (imageHeight > maxHeight) {
imageWidth *= maxHeight/imageHeight;
imageHeight = maxHeight;
}
}
//Create canvas with new image
var canvas = document.createElement('canvas');
canvas.width = imageWidth;
canvas.height = imageHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
// The resized file ready for upload
var finalFile = canvas.toDataURL(fileType);
if (formdata) {
formdata.append("images[]", finalFile);
$.ajax({
url: "upload.php",
type: "POST",
data: formdata,
dataType: 'json',
processData: false,
contentType: false,
success: function (res) {
//successful image upload
}
});
}
}
}
reader.readAsDataURL(file);
이 해결책이 있습니까? 카메라에서 직접 큰 이미지의 크기를 조정하거나 과거에 카메라에서 가져온 이미지의 크기를 조정할 때 문제가 있음을 발견했습니다. – NimmoNet