【문제】종횡비를 유지하여 화상을 표시 【JavaScript, Canvas】
문제
이미지를 가로 세로 비율을 유지하면서 늘리고 캔버스의 중앙에 그립니다.
또한 이미지가 표시되지 않는 부분은 검게 채 웁니다.
※화상은 canvas와는 어스펙트비가 다른 것을 준비해 주세요.
해답 예
function onLoadBody() {
var ctx = document.getElementById('canvas').getContext('2d'),
img = new Image();
img.src = "img/test1.png";
img.onload = function() {
var canvasAspect = ctx.canvas.width / ctx.canvas.height, // canvasのアスペクト比
imgAspect = img.width / img.height, // 画像のアスペクト比
left, top, width, height;
ctx.fillStyle = "black";
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
if(imgAspect >= canvasAspect) {// 画像が横長
left = 0;
width = ctx.canvas.width;
height = ctx.canvas.width / imgAspect;
top = (ctx.canvas.height - height) / 2;
} else {// 画像が縦長
top = 0;
height = ctx.canvas.height;
width = ctx.canvas.height * imgAspect;
left = (ctx.canvas.width - width) / 2;
}
ctx.drawImage(img, 0, 0, img.width, img.height,
left, top, width, height);
};
}
해설
캔버스의 종횡비와 이미지의 종횡비를 구합니다.
이미지가 가로로 길면 캔버스의 상하에 틈이 생깁니다.
그 틈을 계산합니다.
이미지 쪽이 세로 길이인 경우, 캔버스의 좌우에 틈이 생기는군요.
그 틈을 계산합니다.
Reference
이 문제에 관하여(【문제】종횡비를 유지하여 화상을 표시 【JavaScript, Canvas】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PG0721/items/599ba2921b8339700fe3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function onLoadBody() {
var ctx = document.getElementById('canvas').getContext('2d'),
img = new Image();
img.src = "img/test1.png";
img.onload = function() {
var canvasAspect = ctx.canvas.width / ctx.canvas.height, // canvasのアスペクト比
imgAspect = img.width / img.height, // 画像のアスペクト比
left, top, width, height;
ctx.fillStyle = "black";
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
if(imgAspect >= canvasAspect) {// 画像が横長
left = 0;
width = ctx.canvas.width;
height = ctx.canvas.width / imgAspect;
top = (ctx.canvas.height - height) / 2;
} else {// 画像が縦長
top = 0;
height = ctx.canvas.height;
width = ctx.canvas.height * imgAspect;
left = (ctx.canvas.width - width) / 2;
}
ctx.drawImage(img, 0, 0, img.width, img.height,
left, top, width, height);
};
}
해설
캔버스의 종횡비와 이미지의 종횡비를 구합니다.
이미지가 가로로 길면 캔버스의 상하에 틈이 생깁니다.
그 틈을 계산합니다.
이미지 쪽이 세로 길이인 경우, 캔버스의 좌우에 틈이 생기는군요.
그 틈을 계산합니다.
Reference
이 문제에 관하여(【문제】종횡비를 유지하여 화상을 표시 【JavaScript, Canvas】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PG0721/items/599ba2921b8339700fe3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【문제】종횡비를 유지하여 화상을 표시 【JavaScript, Canvas】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PG0721/items/599ba2921b8339700fe3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)