Я пытаюсь повернуть большое изображение и сохранить его как файл. Я пробовал несколько методов, которые выходят из строя из-за большого размера изображения. (OpenCV, Paint Shop Pro и т. Д.).Как сохранить повернутый элемент холста в файл
Итак, я пытаюсь сделать это с помощью javascript. Я могу нарисовать изображение на повернутом холсте (это работает), но когда я пытаюсь сохранить холст в файл, вращение теряется. Имеет смысл, что это происходит, но хотелось бы понять, как захватить/извлечь вращающееся состояние холста перед сохранением?
Код клиента:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
function initPage() {
var imageObj = new Image();
imageObj.onload = function() {
// Draw onto rotated canvas
var canvas = document.getElementById('mapCanvas');
context = canvas.getContext('2d');
context.drawImage(imageObj, 0, 0);
// Save image as png
var dt = canvas.toDataURL('image/png');
$.ajax({
type: "POST",
url: "savePNG.php?file=FN617_ROT",
data: {
imgBase64: dt
}
}).done(function(o) {
console.log('saved');
});
};
imageObj.src = 'FN617.png';
}
</script>
<style>
body {
margin: 0;
padding: 0;
}
#mapCanvas {
transform-origin:center center;
transform: rotate(-32.5deg);
}
</style>
</head>
<body onload="initPage();">
<canvas id="mapCanvas" width="9600" height="7200"></canvas>
</body>
</html>
Серверный код:
<?php
$base64 = str_replace('data:image/png;base64,', '', $_REQUEST['imgBase64']);
$data = base64_decode($base64);
file_put_contents(dirname(__FILE__)."/". $_GET['file'].".png", $data);
?>
Если это одноразовый проект, вы можете подписаться на 30-дневную пробную версию Photoshop, чтобы легко достичь своей цели. – markE