不需要備案如何做網(wǎng)站汽車軟文廣告
1.需求
我前端輪播圖的背景色 想通過每一張輪播圖片的顏色作為背景色 這樣的話 需要通過一張圖片 取出圖片的顏色 這個工作通過前端去處理 也可以通過后端去處理?
前端我試了試 color-thief 的插件 但是 這個插件是基于canvas 的模式來的 我需要在小程序中使用這個插件 而且是Taro + vue3 的項目? 會報錯。
2.解決
我想到了使用后端的能力去取到這個圖片的顏色rgb的顏色 我后端使用的是node 項目?
插件是?
colorthief
npm i --save colorthief
顏色竊賊 (lokeshdhakar.com)
網(wǎng)站放到這里了
實現(xiàn)這樣的效果? 前端 ui效果?
電影圖片輪播的時候 會自動獲取顏色?
因為我目前只是獲取了部分圖片的顏色 所以代碼的顏色是寫死的?
前端
<script setup>
import cityFixed from "./header-city.vue";
import { Search2 } from "@nutui/icons-vue-taro";
import { ref, onMounted, computed } from "vue";
const val = ref("");const colors = ref([[113, 66, 59],[242, 216, 179],[220, 147, 105],
]);const colors1 = ref([[113, 66, 59],[242, 216, 179],[220, 147, 105],
]);
const colors2 = ref([[210, 199, 193],[37, 33, 29],[218, 70, 31],
]);
const colors3 = ref([[46, 42, 42],[177, 169, 171],[139, 151, 159],
]);
const colors4 = ref([[85, 57, 43],[216, 194, 176],[176, 180, 175],
]);
const currentImage = ref("https://gw.alicdn.com/tfscom/i3/O1CN01s4djbH29FutyK4fzY_!!6000000008039-0-alipicbeacon.jpg_300x300.jpg"
);
const currentColor = computed(() => {const startColor1 = `rgb(${colors.value[0][0]}, ${colors.value[0][1]}, ${colors.value[0][2]})`;const startColor2 = `rgb(${colors.value[1][0]}, ${colors.value[1][1]}, ${colors.value[1][2]})`;const startColor3 = `rgb(${colors.value[2][0]}, ${colors.value[2][1]}, ${colors.value[2][2]})`;return `linear-gradient(to bottom, ${startColor1}, ${startColor2},${startColor3})`;
});
const list = ref(["https://gw.alicdn.com/tfscom/i3/O1CN01s4djbH29FutyK4fzY_!!6000000008039-0-alipicbeacon.jpg_300x300.jpg","https://gw.alicdn.com/i4/O1CN01zYtvCj1IXcZQwdhXm_!!6000000000903-0-alipicbeacon.jpg_480x480Q30s150.jpg","https://gw.alicdn.com/i2/O1CN01XZwM5P1u4iycl2qgW_!!6000000005984-0-alipicbeacon.jpg_480x480Q30s150.jpg","https://gw.alicdn.com/tfscom/i2/O1CN01FJb26a1sOIfv6VI4V_!!6000000005756-0-alipicbeacon.jpg",
]);const handleSwiperChange = (event) => {currentImage.value = list.value[event]; // 更新當(dāng)前顯示的圖片URLif (event == 0) {colors.value = colors1.value;} else if (event == 1) {colors.value = colors2.value;} else if (event == 2) {colors.value = colors3.value;} else {colors.value = colors4.value;}
};
onMounted(async () => {
});
</script>
?后端
return ColorThief.getPalette('https://gw.alicdn.com/tfscom/i2/O1CN01FJb26a1sOIfv6VI4V_!!6000000005756-0-alipicbeacon.jpg',3).then(palette => {console.log(palette);return palette;}).catch(err => {console.log(err);});
接口返回的結(jié)果?
{"code": 1000,"message": "success","data": [[85,57,43],[216,194,176],[176,180,175]]
}