delete test page
This commit is contained in:
@@ -1,10 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import domtoimage from "dom-to-image";
|
import domtoimage from "dom-to-image";
|
||||||
import Cropper, {
|
import Cropper, { type OnCropCompleteEvent } from "svelte-easy-crop";
|
||||||
type CropArea,
|
|
||||||
type OnCropComplete,
|
|
||||||
type OnCropCompleteEvent,
|
|
||||||
} from "svelte-easy-crop";
|
|
||||||
|
|
||||||
let crop = { x: 0, y: 0 };
|
let crop = { x: 0, y: 0 };
|
||||||
let zoom = 1;
|
let zoom = 1;
|
||||||
@@ -68,11 +64,6 @@
|
|||||||
|
|
||||||
// Убираем лишние стили
|
// Убираем лишние стили
|
||||||
if (node) {
|
if (node) {
|
||||||
node.style.border = "none";
|
|
||||||
node.style.padding = "0";
|
|
||||||
node.style.margin = "0";
|
|
||||||
node.style.outline = "none";
|
|
||||||
|
|
||||||
domtoimage
|
domtoimage
|
||||||
.toPng(node, {
|
.toPng(node, {
|
||||||
style: {
|
style: {
|
||||||
@@ -193,6 +184,7 @@
|
|||||||
<!-- Текст -->
|
<!-- Текст -->
|
||||||
{#if text}
|
{#if text}
|
||||||
<div
|
<div
|
||||||
|
id="text-frame"
|
||||||
class="absolute bottom-0 left-0 right-0 py-5 bg-black/70 rounded-t-4xl"
|
class="absolute bottom-0 left-0 right-0 py-5 bg-black/70 rounded-t-4xl"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
|
|||||||
@@ -1,113 +0,0 @@
|
|||||||
<script>
|
|
||||||
import Cropper from "svelte-easy-crop";
|
|
||||||
|
|
||||||
let image = ""; // начальное изображение
|
|
||||||
let crop = { x: 0, y: 0 };
|
|
||||||
let zoom = 1;
|
|
||||||
let cropSize = { width: 512, height: 512 };
|
|
||||||
let maxZoom = 10;
|
|
||||||
let minZoom = 1;
|
|
||||||
let restrictPosition = true;
|
|
||||||
let showGrid = false;
|
|
||||||
let croppedImage = null; // хранение вырезанного изображения
|
|
||||||
|
|
||||||
// Функция для обработки загрузки изображения
|
|
||||||
function handleImageUpload(event) {
|
|
||||||
const file = event.target.files[0];
|
|
||||||
if (file) {
|
|
||||||
const reader = new FileReader();
|
|
||||||
reader.onload = (e) => {
|
|
||||||
image = e.target.result; // Обновляем изображение
|
|
||||||
};
|
|
||||||
reader.readAsDataURL(file); // Преобразуем файл в Data URL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Функция для обрезки изображения
|
|
||||||
function cropImage(x, y, width, height) {
|
|
||||||
const img = new Image();
|
|
||||||
img.src = image;
|
|
||||||
|
|
||||||
img.onload = () => {
|
|
||||||
const canvas = document.createElement("canvas");
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
canvas.width = width;
|
|
||||||
canvas.height = height;
|
|
||||||
|
|
||||||
// Обрезаем изображение с помощью canvas
|
|
||||||
ctx.drawImage(img, x, y, width, height, 0, 0, width, height);
|
|
||||||
|
|
||||||
// Получаем обрезанное изображение в формате base64
|
|
||||||
croppedImage = canvas.toDataURL("image/png");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Функция для скачивания обрезанного изображения
|
|
||||||
function downloadImage() {
|
|
||||||
if (croppedImage) {
|
|
||||||
const link = document.createElement("a");
|
|
||||||
link.href = croppedImage;
|
|
||||||
link.download = "cropped-image.png";
|
|
||||||
link.click();
|
|
||||||
} else {
|
|
||||||
alert("Сначала выполните обрезку изображения!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Обработчик события cropcomplete
|
|
||||||
function handleCropComplete(event) {
|
|
||||||
const { x, y, width, height } = event.detail;
|
|
||||||
cropImage(x, y, width, height);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="flex flex-col">
|
|
||||||
<div class="h-[1024px] w-[1024px] relative">
|
|
||||||
<Cropper
|
|
||||||
{image}
|
|
||||||
{cropSize}
|
|
||||||
{maxZoom}
|
|
||||||
{minZoom}
|
|
||||||
{restrictPosition}
|
|
||||||
{showGrid}
|
|
||||||
bind:crop
|
|
||||||
bind:zoom
|
|
||||||
on:cropcomplete={handleCropComplete}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<!-- Кнопка для загрузки изображения -->
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
accept="image/*"
|
|
||||||
on:change={handleImageUpload}
|
|
||||||
class="upload-btn"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if croppedImage}
|
|
||||||
<!-- Кнопка для скачивания вырезанного изображения -->
|
|
||||||
<button on:click={downloadImage}> Скачать вырезанное изображение </button>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.upload-btn {
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.download-btn {
|
|
||||||
margin-top: 10px;
|
|
||||||
padding: 10px 20px;
|
|
||||||
background-color: #4caf50;
|
|
||||||
color: white;
|
|
||||||
border: none;
|
|
||||||
border-radius: 5px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.download-btn:hover {
|
|
||||||
background-color: #45a049;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Reference in New Issue
Block a user