photocn

Search

Search the docs

0

Export

Choose the format, quality and size, then download or save.

"use client";

import { ImageEditorProvider } from "photocn/react";

import { ImageEditorCanvas } from "@/components/image-editor/canvas";
import { ImageEditorExportDialog } from "@/components/image-editor/export-dialog";

export default function ExportDemo() {
  return (
    <ImageEditorProvider src="/samples/portrait.jpg">
      <div className="relative h-[420px] overflow-hidden rounded-xl border bg-background">
        <ImageEditorCanvas className="p-2" />
        <div className="absolute top-4 right-4">
          <ImageEditorExportDialog
            onSave={async ({ blob, filename }) => {
              // Upload it anywhere, e.g. await fetch("/api/photos", { method: "POST", body: blob })
              console.log("save", filename, blob.size);
            }}
          />
        </div>
      </div>
    </ImageEditorProvider>
  );
}

Installation

pnpm dlx shadcn@latest add @photocn/image-editor-export

Usage

import { ImageEditorExportDialog } from "@/components/image-editor/export-dialog";

<ImageEditorExportDialog onSave={async ({ blob }) => upload(blob)} />

Props

PropTypeDescription
triggerReactNodeThe button that opens it. Default: an Export button.
defaultFormat"png" | "jpeg" | "webp"Default "png".
onSave(result) => Promise<void>Adds a Save button, e.g. to upload the image.
saveLabelstringLabel for the Save button.
hideDownloadbooleanHide the Download button.
open / onOpenChangebooleanControl whether it's open.