Javascriptで選択した画像ファイルを、縦横比(アスペクト比)を保持しながらリサイズを行いPNG形式に変換してimgタグに表示する
html,javascriptソースコード
<script>
window.addEventListener('load',function(){
document.getElementById("imgfile").addEventListener("change",function(){
let file = event.target.files[0];
let reader = new FileReader();
let img = new Image();
img.onload=function(){
let w,h,px=200;
//縦横比を変えない幅高さを計算する
if(img.width>img.height){
w=px;
h=img.height*w/img.width;
}else{
h=px;
w=img.width*h/img.height;
}
let can = document.createElement("canvas");
var ctx = can.getContext("2d", {willReadFrequently:true});
can.width=w;
can.height=h;
ctx.drawImage(img,0,0,img.width,img.height,0,0,w,h);
let src=can.toDataURL("image/png");
document.getElementById("preimg").src=src;
}
reader.onload = function(event) {
img.setAttribute("src", reader.result);
};
reader.readAsDataURL(file);
});
});
</script>
