Ich habe ein Codebeispiel, wo ich ein großes Bild auf eine kleinere Größe mit der Leinwand anpassen die Größe des Bildes anpassen. Es gibt eine Funktion zum Drehen nach rechts, mit der das Bild innerhalb der Leinwand gedreht wird, wodurch die Leinwandgröße angepasst wird. Ich habe es fast perfekt funktioniert, aber das Bild ist perfekte Größe nur im Original oder auf dem Kopf. Ich kann das Verhältnis nicht richtig einstellen, wenn das Bild nach links oder rechts gedreht wird. Hier ist meine Jsfiddle und Code, der Code von einer anderen Geige geändert wird. Das Bild wird nur als Test verwendet.Html Leinwand drehen größeres Bild mit Seitenverhältnis
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var canvasWidth = 400;
var canvasHeight;
var degrees=0;
var image=document.createElement("img");
image.onload=function(){
canvas.width = canvasWidth;
canvasHeight = 400/(image.width/image.height);
canvas.height = canvasHeight;
ctx.drawImage(image,0,0,canvas.width,canvas.height);
}
image.src="https://www.magezinepublishing.com/equipment/images/equipment/Lumix-DMCFZ330-5824/highres/Panasonic-Lumix-FZ330-Wide-P1010001_1438873612.jpg";
$("#clockwise").click(function(){
degrees+=90
if (degrees >= 360) degrees = 0;
if (degrees === 0 || degrees === 180) {
canvas.width = canvasWidth;
canvas.height = canvasHeight;
}
else {
// swap
canvas.width = canvasHeight;
canvas.height = canvasWidth;
}
ctx.save();
// you want to rotate around center of canvas
ctx.translate(canvas.width/2,canvas.height/2);
ctx.rotate(degrees*Math.PI/180);
ctx.drawImage(image, -canvas.width*0.5, -canvas.height*0.5, canvas.width, canvas.height);
ctx.restore();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="canvas" ></canvas><br>
<button id="clockwise">Rotate right</button>
Jede Hilfe ist willkommen.
Wenn Sie das Bild nur drehen möchten, benötigen Sie dafür keine Leinwand. Einfaches CSS wird ausreichen. – Nisarg
Ich brauche die Leinwand, weil die Rotation nur ein Stück ist. Ich habe andere Logik, die andere Elemente der Leinwand hinzufügen wird, um ein neues Bild zu erstellen. – Jim