Feature description
Add an “Export frame” action (button) that captures the current preview frame and downloads it as a PNG matching the preview resolution and active transforms (crop/rotation/scale).
Problem this solves
Users frequently need a thumbnail or single-frame image from a video. Currently they must export a full video or use external tools/screenshots, which is slow and error-prone—especially when the preview is rotated/cropped.
Proposed solution
UI: add an Export frame button in the preview toolbar (and optionally in the Export modal). Consider a keyboard shortcut (e.g., T) and a right‑click “Save frame” context action.
Implementation:
Render the current video frame to an offscreen at the preview’s output resolution.
Apply the same transforms used by the preview (crop rectangle, rotation, scale, fit/fill) when drawing to canvas.
Call canvas.toBlob() with image/png and prompt a download with a sensible filename (e.g., reframe-frame-YYYYMMDD-HHMMSS.png).
Preserve metadata where feasible (dimensions, rotation).
Add a small visual confirmation (toast) on success and graceful error handling.
Tests: manual test case for rotated and cropped frames; unit test for drawing pipeline if logic is extracted into a helper.
Alternatives considered
Suggest users take a screenshot — inconsistent dimensions and not reproducible.
Add frame-export as part of full export flow — heavier and slower than a single-frame operation.
Acceptance Criteria
Clicking the button downloads a PNG that matches the preview’s current frame and applied transforms.
Works for rotated/cropped frames and with different preview resolutions.
Includes a brief toast confirmation or similar UI feedback on success/failure.
Additional context
Implementation can reuse existing preview/canvas utilities (see src/.../VideoPreview and any canvas helpers).
Labels: type:feature, area:export, level 3.
Feature description
Add an “Export frame” action (button) that captures the current preview frame and downloads it as a PNG matching the preview resolution and active transforms (crop/rotation/scale).
Problem this solves
Users frequently need a thumbnail or single-frame image from a video. Currently they must export a full video or use external tools/screenshots, which is slow and error-prone—especially when the preview is rotated/cropped.
Proposed solution
UI: add an Export frame button in the preview toolbar (and optionally in the Export modal). Consider a keyboard shortcut (e.g., T) and a right‑click “Save frame” context action.
Implementation:
Render the current video frame to an offscreen at the preview’s output resolution.
Apply the same transforms used by the preview (crop rectangle, rotation, scale, fit/fill) when drawing to canvas.
Call canvas.toBlob() with image/png and prompt a download with a sensible filename (e.g., reframe-frame-YYYYMMDD-HHMMSS.png).
Preserve metadata where feasible (dimensions, rotation).
Add a small visual confirmation (toast) on success and graceful error handling.
Tests: manual test case for rotated and cropped frames; unit test for drawing pipeline if logic is extracted into a helper.
Alternatives considered
Suggest users take a screenshot — inconsistent dimensions and not reproducible.
Add frame-export as part of full export flow — heavier and slower than a single-frame operation.
Acceptance Criteria
Clicking the button downloads a PNG that matches the preview’s current frame and applied transforms.
Works for rotated/cropped frames and with different preview resolutions.
Includes a brief toast confirmation or similar UI feedback on success/failure.
Additional context
Implementation can reuse existing preview/canvas utilities (see src/.../VideoPreview and any canvas helpers).
Labels: type:feature, area:export, level 3.