HTML/Javascriptで作業していて、ウィンドウのサイズに基づいて画像のサイズを変更する必要があります。イメージは、ウィンドウスペースのすべてを占有しますが、サイズ変更時にはアスペクト比を維持します。また、ウィンドウのサイズが最も長い側よりも大きくなると、イメージは回転してサイズが変更されます。HTML>ウィンドウと画像のサイズに基づいて画像を回転させて拡大/縮小する
たとえば、画像の高さが幅よりも広く、ウィンドウのサイズが非常に大きく変わる場合、画像のアスペクト比を同じに保ちながら、ウィンドウのスペースを最大にするために、画像は回転してサイズを変更する必要があります。画像は画面の中央に配置する必要があります。そのため、画像の両側に同じ死角が表示されます。
私はこれを動作させることができません。ここまでは私のコードです。
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="test.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function resize_canvas(){
var main_canvas=document.getElementById("test");
var cxt=main_canvas.getContext("2d");
var img=new Image();
var ratio = 1;
var changed = 1;
var mid = 1;
var srcLink = "tall.JPG"; // test with tall and wide pics
main_canvas.width = window.innerWidth;
main_canvas.height = window.innerHeight;
img.src=srcLink;
if(window.innerWidth > window.innerHeight){ // if window port is wider than tall
changed = window.innerWidth/(img.width/img.height);
mid = window.innerHeight/2;
img.onload = function()
{
if (img.width < img.height){
ratio = window.innerHeight/img.height;
changed = img.width * ratio;
cxt.rotate(90 * Math.PI/180);
cxt.drawImage(img, 0, -img.height,changed,window.innerWidth);
} else {
cxt.drawImage(img,0,mid,window.innerWidth,changed);
}
} // end img onload call
}else{ // if window port is taller than wide
ratio = window.innerHeight/img.height;
changed = img.width * ratio;
mid = window.innerWidth/2;
img.onload = function()
{
if (img.width > img.height){
ratio = window.innerWidth/img.width;
changed = img.height * ratio;
mid = window.innerHeight/2 - changed/2;
cxt.rotate(90 * Math.PI/180);
cxt.drawImage(img, 0, -img.height,window.innerHeight,changed);
} else {
cxt.drawImage(img,mid,0,changed,window.innerHeight);
}
} // end img on load
} // end window size else block
} // end resize function
</script>
</head>
<body onload="resize_canvas();" onresize="resize_canvas();">
<canvas id="test"> canvas not supported </canvas>
</body>
</html>
css file
html, body {
width: 100%;
height: 100%;
margin: 0px;
}
#test
{
width: 100%; height: auto;
}
私はちょうど学んでいますが、私はこの問題を解決する方法についてのアイデアを実行していますように私はこれに多くの日を過ごしました。どんな助けでも大歓迎です。
ありがとうございました。
どの部分が機能しませんか? –
画像を拡大/縮小することはできますが、画像を正しく中央に配置することはできません。また、画像を回転させなければならない場合、スケーリングとセンタリングは機能しないように見えます。画像が部分的に画面から外れているか、画像のサイズを変更しようとすると表示されません。私はどこにいるのか正確にはわかりません。 – nomaam
サポートするブラウザとバージョンを教えてください。 – Phrogz