js实现psd文件预览
浏览器端PSD文件预览实现方案
在浏览器中实现PSD文件预览通常需要借助专门的JavaScript库解析PSD格式文件。以下是几种常用方法:
使用psd.js库
psd.js是一个纯JavaScript实现的PSD文件解析库,可以直接在浏览器中运行:
import PSD from 'psd';
const fileInput = document.getElementById('psd-file-input');
fileInput.addEventListener('change', async (e) => {
const file = e.target.files[0];
const psd = await PSD.fromDroppedFile(file);
// 获取合并后的图像数据
const imageData = psd.image.toBase64();
const img = document.createElement('img');
img.src = imageData;
document.body.appendChild(img);
// 获取图层信息
psd.tree().descendants().forEach(layer => {
console.log(layer.name, layer.width, layer.height);
});
});
使用WebAssembly方案
对于大型PSD文件,可以考虑使用WebAssembly加速解析:
-
安装@webtoon/psd库

npm install @webtoon/psd -
示例代码:
import { PSD } from '@webtoon/psd';
const response = await fetch('file.psd'); const arrayBuffer = await response.arrayBuffer(); const psd = PSD.parse(arrayBuffer);

// 获取预览图 const canvas = document.createElement('canvas'); canvas.width = psd.width; canvas.height = psd.height; psd.composite(canvas); document.body.appendChild(canvas);
### 服务器端转换方案
对于更复杂的PSD文件,建议在服务器端转换为其他格式:
1. 使用Node.js的psd模块:
```javascript
const PSD = require('psd');
const psd = PSD.open("path/to/file.psd");
psd.parse();
// 导出为PNG
psd.image.saveAsPng("output.png");
- 通过API服务转换后返回前端:
// 前端上传文件 const uploadPSD = async (file) => { const formData = new FormData(); formData.append('psd', file);
const response = await fetch('/api/convert-psd', { method: 'POST', body: formData });
return response.json(); // 返回预览URL或数据 };
### 注意事项
- PSD文件可能包含大量图层,浏览器端解析可能性能受限
- 复杂效果(如图层样式)可能无法完整呈现
- 大文件建议采用分块加载或服务端预处理
- 考虑添加加载进度指示器改善用户体验
以上方案可根据实际需求选择或组合使用,对于简单预览psd.js通常足够,专业级应用建议考虑服务端处理方案。






