Я использую веб-страницу ниже, чтобы нарисовать фотографию, выбранную с iPhone, на холст, чтобы впоследствии ее можно было загрузить на веб-страницу поверх ajax. Код также имел бы понижающую дискретизацию, но я пропустил это, чтобы сделать его более простым.Рисование выбранной фотографии на холст с помощью Javascript
Этот код отлично работает на Mac OSx в Firefox и Safari, но при использовании с iPhone он не так, когда вы выбираете фотографию из своей библиотеки iPhone или делаете снимок. Фотография на холсте имеет неправильное соотношение сторон и перевернута. НО, если вы импортируете фотографию с iPhone на свой Mac, а затем вернете ее на телефоне с iTunes, эта фотография, когда выбрано, будет отлично! Почему бы это было так, я думаю, что это может быть связано с чем-то, когда изображение поворачивается после его импорта на Mac.
В основном я пытаюсь написать сценарий, чтобы пользователь мог сфотографироваться с iPhone, фотография сбрасывается с использованием холста и javascript, а затем загружается через ajax. Но проблема в том, что фотография на холсте не получается сразу, когда вы делаете свежую фотографию.
Первое изображение = правильное Второе изображение = некорректный
Холст Унесенные Неправильный
<style type="text/css">
#theImage {
display:block;
}
#cv {
background-color:#F00;
}
</style>
</head>
<body>
<form id="pageform" method="post" enctype="multipart/form-data" action="">
<input type="file" name="fileinput" id="fileinput" accept="image/*"/>
</form>
<canvas id='cv' width="918" height="689"></canvas>
<img id="theImage" />
<script type="text/javascript">
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#theImage').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
function another() {
var cv = document.getElementById('cv');
var context = cv.getContext('2d');
context.ImageSmoothingEnabled = true;
context.webkitImageSmoothingEnabled = true;
context.mozImageSmoothingEnabled = true;
var img = document.getElementById('theImage');
context.drawImage(img,0, 0, 918,689);
}
$(document).ready(function() {
$('#fileinput').change(function() {
readURL(this);
setTimeout(another,2000);
});
});
</script>
</body>
</html>
Нет. Я боюсь, что это делает то же самое на iOS 7, результирующее изображение перевернуто и, что более важно, не имеет правильной высоты, оно выглядит сплющенным –