import React from "react"; import useCameraStore from "../hooks/useCameraStore"; import { IconButton } from "@mui/material"; import { PhotoCameraFrontOutlined } from "@mui/icons-material"; const MAX_WIDTH = 1024; const JPEG_QUALITY = 0.7; const PackageCamera: React.FC = () => { const { setImagePackage } = useCameraStore(); const compressImage = (file: File): Promise => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => { const img = new Image(); img.onload = () => { let { width, height } = img; if (width > MAX_WIDTH) { height = (height * MAX_WIDTH) / width; width = MAX_WIDTH; } const canvas = document.createElement("canvas"); canvas.width = width; canvas.height = height; const ctx = canvas.getContext("2d"); if (!ctx) { reject("Canvas not supported"); return; } ctx.drawImage(img, 0, 0, width, height); const compressedBase64 = canvas.toDataURL("image/jpeg", JPEG_QUALITY); resolve(compressedBase64); }; img.onerror = reject; img.src = reader.result as string; }; reader.onerror = reject; reader.readAsDataURL(file); }); }; const handleCapture = async (event: React.ChangeEvent) => { const file = event.target.files?.[0]; if (!file) return; try { const compressed = await compressImage(file); setImagePackage(compressed); } catch (err) { console.error("Image compress failed", err); } }; return (
); }; export default PackageCamera;