Trent Larson
9 months ago
7 changed files with 118 additions and 3 deletions
@ -0,0 +1,89 @@ |
|||
<template> |
|||
<!-- CONTENT --> |
|||
<section id="Content" class="p-6 pb-24 max-w-3xl mx-auto"> |
|||
<!-- Breadcrumb --> |
|||
<div class="mb-8"> |
|||
<!-- Back --> |
|||
<div class="text-lg text-center font-light relative px-7"> |
|||
<h1 |
|||
class="text-lg text-center px-2 py-1 absolute -left-2 -top-1" |
|||
@click="$router.back()" |
|||
> |
|||
<fa icon="chevron-left" class="fa-fw"></fa> |
|||
</h1> |
|||
</div> |
|||
|
|||
<!-- Heading --> |
|||
<h1 id="ViewHeading" class="text-4xl text-center font-light pt-4"> |
|||
Photo |
|||
</h1> |
|||
</div> |
|||
<div v-if="localImageUrl"> |
|||
Dude, you got an image! Dude, you got an image! |
|||
</div> |
|||
<div v-else> |
|||
<camera |
|||
:resolution="{ width: 375, height: 812 }" |
|||
facingMode="user" |
|||
autoplay |
|||
ref="camera" |
|||
> |
|||
<button @click="storeImage">I'm on top of the video</button> |
|||
</camera> |
|||
</div> |
|||
</section> |
|||
</template> |
|||
|
|||
<script lang="ts"> |
|||
import axios from "axios"; |
|||
import Camera from "simple-vue-camera"; |
|||
import { Component, Vue } from "vue-facing-decorator"; |
|||
|
|||
interface Notification { |
|||
group: string; |
|||
type: string; |
|||
title: string; |
|||
text: string; |
|||
} |
|||
|
|||
@Component({ components: { Camera } }) |
|||
export default class GiftedPhoto extends Vue { |
|||
$notify!: (notification: Notification, timeout?: number) => void; |
|||
|
|||
localImageUrl: string | null = null; |
|||
|
|||
async storeImage(/* payload: MouseEvent */) { |
|||
const cameraComponent = this.$refs.camera as InstanceType<typeof Camera>; |
|||
const blob = await cameraComponent?.snapshot(); |
|||
if (!blob) { |
|||
this.$notify( |
|||
{ |
|||
group: "alert", |
|||
type: "danger", |
|||
title: "Error", |
|||
text: "There was an error taking the picture. Please try again.", |
|||
}, |
|||
-1, |
|||
); |
|||
return; |
|||
} |
|||
|
|||
//this.localImageUrl = URL.createObjectURL(blob); |
|||
|
|||
console.log("Got an image:", blob?.size); |
|||
|
|||
const formData = new FormData(); |
|||
formData.append("image", blob, "snapshot.jpg"); |
|||
try { |
|||
const response = await axios.post( |
|||
"http://localhost:3000/image", |
|||
formData, |
|||
); |
|||
|
|||
console.log("Upload successful", response.data); |
|||
} catch (error) { |
|||
console.error("Error uploading the image", error); |
|||
} |
|||
} |
|||
} |
|||
</script> |
Loading…
Reference in new issue