js实现psd文件预览
使用 psd.js 库解析 PSD 文件
PSD.js 是一个纯 JavaScript 库,可以在浏览器或 Node.js 环境中解析 PSD 文件。安装方式如下:
npm install psd
基本用法示例:
const PSD = require('psd');
const psd = PSD.fromFile("path/to/file.psd");
psd.parse();
// 获取图层信息
console.log(psd.tree().export());
浏览器端实现预览
在浏览器中可以通过 File API 读取用户上传的 PSD 文件,结合 psd.js 进行解析:
document.getElementById('psd-upload').addEventListener('change', function(e) {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = function(e) {
const PSD = require('psd');
const psd = PSD.fromDatum(e.target.result);
psd.parse();
// 生成预览图
const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
psd.image.toCanvas(canvas);
};
reader.readAsArrayBuffer(file);
});
使用 WebAssembly 加速
对于大型 PSD 文件,可以考虑使用 WebAssembly 版本提高性能:
import { loadPSD } from 'psd-wasm';
async function previewPSD(file) {
const arrayBuffer = await file.arrayBuffer();
const psd = await loadPSD(arrayBuffer);
const canvas = document.getElementById('preview-canvas');
psd.drawToCanvas(canvas);
}
提取特定图层
如果需要单独提取某个图层进行预览:
const tree = psd.tree();
tree.descendants().forEach(layer => {
if (layer.isGroup) return;
const canvas = document.createElement('canvas');
layer.image.toCanvas(canvas);
document.body.appendChild(canvas);
});
注意事项
PSD 文件可能包含大量图层和复杂效果,完整渲染可能消耗较多资源。建议:
- 限制预览文件大小
- 显示加载进度
- 提供降级方案(如仅显示缩略图)
浏览器兼容性方面需要注意:
- File API 的支持情况
- WebAssembly 的兼容性
- 内存限制问题







