3.3 KiB
3.3 KiB
Screen Capture Tool
A standalone utility for capturing screenshots from user's screen using the native Browser Screen Capture API.
Features
- 📸 Capture screenshots from user-selected screen/window
- 🎯 No external dependencies
- ⚡ Returns canvas for flexible post-processing
- 🛡️ Graceful error handling
- ♿ Respects user permissions
Installation
Copy the screen-capture folder to your project:
your-project/
├── tools/
│ └── screen-capture/
│ ├── index.js
│ └── README.md
Usage
Basic Screenshot Capture
import { captureScreenshot } from './tools/screen-capture/index.js';
const canvas = await captureScreenshot();
if (canvas) {
// Canvas is ready for use
// Convert to File, display, or manipulate further
}
Convert to File
import { captureScreenshot, canvasToFile } from './tools/screen-capture/index.js';
const canvas = await captureScreenshot();
if (canvas) {
const file = await canvasToFile(canvas, 'my-screenshot.png');
// Use file with FormData, attachments, etc.
}
One-liner with Blob
const canvas = await captureScreenshot();
canvas?.toBlob((blob) => {
const file = new File([blob], `screenshot-${Date.now()}.png`, { type: 'image/png' });
// Use file...
});
API Reference
captureScreenshot()
Returns: Promise<Canvas | null>
Opens native browser dialog for user to select screen/window to capture. Returns a canvas element containing the screenshot, or null if user cancels or error occurs.
Example:
const canvas = await captureScreenshot();
canvasToFile(canvas, filename?)
Parameters:
canvas(Canvas): Canvas element to convertfilename(string, optional): Custom filename. Defaults toscreenshot-{timestamp}.png
Returns: Promise<File>
Converts canvas to PNG File object for easy handling in file uploads or attachments.
Example:
const file = await canvasToFile(canvas, 'custom-name.png');
Browser Support
Requires browsers supporting the Screen Capture API:
- Chrome 72+
- Edge 79+
- Firefox 66+
- Safari 13+
Note: User must grant permission for each capture request.
Error Handling
The tool gracefully handles:
- User cancellation of the capture dialog
- Browser permission denial
- Browser incompatibility
- Missing canvas/video support
All errors are logged to console and return null.
Examples
React Component
import { captureScreenshot, canvasToFile } from './tools/screen-capture/index.js';
export function ScreenshotButton() {
const handleCapture = async () => {
const canvas = await captureScreenshot();
if (canvas) {
const file = await canvasToFile(canvas);
console.log('Screenshot captured:', file.name);
}
};
return <button onClick={handleCapture}>Take Screenshot</button>;
}
With Form Submission
import { captureScreenshot, canvasToFile } from './tools/screen-capture/index.js';
const canvas = await captureScreenshot();
if (canvas) {
const file = await canvasToFile(canvas);
const formData = new FormData();
formData.append('screenshot', file);
await fetch('/api/upload', { method: 'POST', body: formData });
}
License
MIT - Use freely in your projects