Loading...
Loading...
Convert draw.io diagram files (.drawio, .dio, .xml) to high-resolution PNG images. Use when users ask to "convert drawio to png", "export drawio diagrams", "generate png from drawio", "drawio导出png", "转换drawio图片", "生成高清drawio图片", or need to convert draw.io files to image format for documentation, presentations, or publishing.
npx skill4agent add huyansheng3/ppt-skills drawio-to-png# macOS
brew install --cask drawio
# Or download from: https://github.com/jgraph/drawio-desktop/releases# Convert single file
/Applications/draw.io.app/Contents/MacOS/draw.io -x -f png -o output.png input.drawio
# With custom scale (higher DPI)
/Applications/draw.io.app/Contents/MacOS/draw.io -x -f png -s 2 -o output.png input.drawio
# Transparent background
/Applications/draw.io.app/Contents/MacOS/draw.io -x -f png --transparent -o output.png input.drawio
# Export specific page (for multi-page diagrams)
/Applications/draw.io.app/Contents/MacOS/draw.io -x -f png -p 0 -o output.png input.drawio-x-f png-o-s <scale>--transparent-p <page>-w <width>-h <height>--border <size>npm install puppeteerscripts/convert-with-puppeteer.jsconst puppeteer = require('puppeteer');
const fs = require('fs');
const path = require('path');
async function convertDrawioToPng(inputPath, outputPath, options = {}) {
const {
scale = 2,
transparent = true,
page = 0
} = options;
const browser = await puppeteer.launch();
const browserPage = await browser.newPage();
// Set viewport for high DPI
await browserPage.setViewport({
width: 1920,
height: 1080,
deviceScaleFactor: scale
});
// Read drawio file
const drawioContent = fs.readFileSync(inputPath, 'utf8');
const encoded = encodeURIComponent(drawioContent);
// Load in draw.io viewer
await browserPage.goto(`https://viewer.diagrams.net/?lightbox=1&edit=_blank#R${encoded}`);
// Wait for diagram to render
await browserPage.waitForSelector('.geDiagramContainer', { timeout: 10000 });
await browserPage.waitForTimeout(1000);
// Take screenshot
const element = await browserPage.$('.geDiagramContainer');
await element.screenshot({
path: outputPath,
omitBackground: transparent
});
await browser.close();
}docker pull rlespinasse/drawio-clidocker run --rm -v "$(pwd):/data" rlespinasse/drawio-cli \
-x -f png -s 2 -o /data/output.png /data/input.drawiofind . -type f \( -name "*.drawio" -o -name "*.dio" -o -name "*.xml" \)# Export with border for better visibility
drawio -x -f png -s 2 --border 10 -o docs/images/architecture.png architecture.drawio# High resolution with transparent background
drawio -x -f png -s 3 --transparent -o slides/diagram.png diagram.drawio# Moderate resolution to balance quality and file size
drawio -x -f png -s 1.5 -o public/images/flowchart.png flowchart.drawio# Export all pages
for i in {0..4}; do
drawio -x -f png -s 2 -p $i -o "output-page-$i.png" multi-page.drawio
done1.02.03.04.0/Applications/draw.io.app/Contents/MacOS/draw.iodiagram-2x.pngdiagram-3x.pngflow-page-1.pngpngquantoptipngscripts/convert.shreferences/examples/