> 웹 프론트엔드 > JS 튜토리얼 > vue가 js를 사용하여 이미지를 동일하게 압축하는 방법

vue가 js를 사용하여 이미지를 동일하게 압축하는 방법

零到壹度
풀어 주다: 2018-04-21 15:03:03
원래의
3077명이 탐색했습니다.

이 기사에서는 vue가 js를 사용하여 이미지를 동일한 비율로 압축하는 방법을 소개합니다. 이제 특정 참조 값을 공유합니다. . 관광사업에는 대부분 사진이 있는 것으로 알고 있습니다

1. 프로젝트에서 사진의 크기가 크고 사진의 가로, 세로 설정으로 인해 사진이 심하게 압축됩니다

*아래 원본 사진을 보여드리겠습니다



2. 사진 설정 방법은 다양합니다. 배경 이미지를 통해 배경을 설정할 수 있는데, 일부 작은 사진에는 글꼴 아이콘을 사용하는 것이 좋습니다. 프로젝트?

3. 아래에서는 너비와 높이를 설정한 사진을 보여드리겠습니다


​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 4. 온라인에서 일부 정보를 읽고 필요한 내용과 결합합니다. 여전히 약간의 오류가 있지만 배경 설정 업로드 사진 사양이 압축 효과에 큰 영향을 미치는 한 효과는 달성됩니다. 사진


마지막으로 코드를 첨부했습니다 (더 좋은 방법이 있습니다 함께 소통해주세요)

<template>
<p class="hello">
<p class="dom_width">
<img class="img_block" v-for="(item, index) in listImg" :key="index" :src="item" alt="">
</p>
</p>
</template>
<script>
export default {
name: "HelloWorld",
data() {
return {
listImg: [
"https://desk-fd.zol-img.com.cn/t_s720x360c5/g5/M00/0D/06/ChMkJlojp_qITurJAAuxrJdcGiEAAiwQAKU7i0AC7HE992.jpg",
"https://desk-fd.zol-img.com.cn/t_s720x360c5/g5/M00/03/00/ChMkJ1pcn7OIULOjAAWUOFboVoEAAkG3ANBKU8ABZRQ309.jpg",
"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1046983545,2051560208&fm=27&gp=0.jpg"
]
}
},
created() {
},
mounted() {
// 获取所有的img标签
let imgList = document.querySelectorAll(".img_block");
// 获取父元素宽高
let parentWh = imgList[0].parentNode;
let wid = this.getWidHei(parentWh, &#39;width&#39;);
let hei = this.getWidHei(parentWh, &#39;height&#39;);
// 等比压缩图片
this.AutoSize(imgList, wid, hei);
},
methods: {
AutoSize(listImg, maxWidth, maxHeight) {
//原图片原始地址(用于获取原图片的真实宽高,当<img>标签指定了宽、高时不受影响)
let image = new Image();
for (let i = 0; i < listImg.length; i++) {
// 获取每一个图片的宽高
image.src = listImg[i].src;
// 当图片比图片框小时不做任何改变
if (image.width < maxWidth && image.height < maxHeight) {
//原图片宽高比例 大于 图片框宽高比例
listImg[i].width = image.width;
listImg[i].height = image.height;
} else {
//原图片宽高比例 大于 图片框宽高比例,则以框的宽为标准缩放,反之以框的高为标准缩放
if (maxWidth / maxHeight <= image.width / image.height) {
listImg[i].width = maxWidth; //以框的宽度为标准
listImg[i].height = maxWidth * (image.height / image.width);
} else {
listImg[i].width = maxHeight * (image.width / image.height);
listImg[i].height = maxHeight; //以框的高度为标准
}
}
}
},
// 考虑 IE 的兼容性
getStyle(el) {
if (window.getComputedStyle) {
return window.getComputedStyle(el, null);
} else {
return el.currentStyle;
}
},
// 通过当前元素获取宽高
getWidHei(el, name) {
let val = name === "width" ? el.offsetWidth : el.offsetHeight,
which = name === "width" ? ["Left", "Right"] : ["Top", "Bottom"];
// display is none
if (val === 0) {
return 0;
}
let style = this.getStyle(el);
// 左右或上下两边的都减去
for (let i = 0, a; (a = which[i++]); ) {
val -= parseFloat(style["border" + a + "Width"]) || 0;
val -= parseFloat(style["padding" + a]) || 0;
}
return val;
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.dom_width {
width: 200px;
height: 300px;
background-color: skyblue;
}
</style>
로그인 후 복사

관련 권장 사항:

java는 이미지를 동일하게 압축하기 위해 너비를 지정합니다. 비율

Html5를 사용하여 이미지 압축


CSS 이미지 자르기 및 원본 비율 압축 또는

php 이미지를 확대하고 비례적으로 압축

위 내용은 vue가 js를 사용하여 이미지를 동일하게 압축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿