本页演示如何使用 RenderService 在浏览器中完成PSD渲染。你需要注册会员,拿到apiToken,并上传PSD,获取到psdKey后才能复现下面的示例。 将智能对象 FRONT-CENTRAL 替换为指定图片,并支持导出渲染结果。
<script src="/app/js/render.min.js"></script>
const renderService = new RenderService({
apiHost: 'https://renderpsd.podorn.com', // API地址,同域可留空
apiToken: '你的API TOKEN',
width: 1000,
height: 1000
});
const psdKey = '你上传PSD后生成的psdKey';
await renderService.initKeys([psdKey]);
const container = document.getElementById('container');
await renderService.renderAll(container);
const imageUrl = '图片网址或base64数据';
//FRONT-CENTRAL是这个PSD中要替换的智能对象图层名称
const list = {
'FRONT-CENTRAL': imageUrl
};
await renderService.update(list, (renderedPsdKey) => {
console.log('渲染完成的psdKey', renderedPsdKey);
});
// dataType: 'blob' 或 'base64'
// format: 'png' 或 'webp'或'jpeg'
// quality: 0~1,png格式quality参数无效,webp/jpeg格式quality参数有效,数值越大质量越好(文件也越大)
const dataType = 'blob';
const format = 'png';
const quality = 1;
const data = await renderService.toDataURLByKey(
psdKey, format, quality, dataType
);
const url = URL.createObjectURL(data);
const a = document.createElement('a');
a.href = url;
a.download = 'render_result.png';
a.click();
URL.revokeObjectURL(url);
// 适合一次渲染了多个psdKey的场景
renderService.toDataURLAll(
'png', 1,
function (data, psdKey) {
// 每导出一个psdKey都会调用一次该回调
console.log('单个导出完成', psdKey);
},
'blob'
).then((dataItems) => {
// dataItems 数组,每项含 dataUrl, psdKey, format
for (const item of dataItems) {
if (item.format === 'blob') {
const url = URL.createObjectURL(item.dataUrl);
const a = document.createElement('a');
a.href = url;
a.download = `render_${item.psdKey}.png`;
a.click();
URL.revokeObjectURL(url);
}else{
console.log('导出base64', item.dataUrl);
}
}
});