Skip to content

Instantly share code, notes, and snippets.

@TheFarmingBunny
Created August 18, 2020 22:35
Show Gist options
  • Save TheFarmingBunny/5969ffa6db58067d9f2dedf67107db94 to your computer and use it in GitHub Desktop.
Save TheFarmingBunny/5969ffa6db58067d9f2dedf67107db94 to your computer and use it in GitHub Desktop.
<template>
<input ref="imagePicker" type="file" accept="image/*" style="display:none;" @input="handleImage">
</template>
<script>
export default {
name: "ImagePicker",
methods: {
async handleImage() {
let image = this.$refs.imagePicker.files[0]
if(image.type != "image/webp") {
let img = document.createElement("img")
img.src = URL.createObjectURL(image)
await new Promise(resolve => img.addEventListener("load", () => resolve()))
let canvas = document.createElement("canvas")
canvas.width = img.width
canvas.height = img.height
canvas.getContext("2d").drawImage(img, 0, 0)
image = await new Promise(resolve => {
canvas.toBlob(blob => resolve(blob), "image/webp")
})
}
this.$emit("image", image)
},
click() {this.$refs.imagePicker.click()}
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment