透過網頁讀取PSD後,依圖層輸出PNG檔案
在前面介紹過網頁可以讀取PSD檔案並擷取到該檔案的資訊,接著我們會希望能透過網頁上傳PSD檔之後,依照圖層來輸出圖片,同樣是利用PSD.js來輔助進行,可以透過我們製作的範例頁面來進行輸出測試。
預設輸出效果
透過PSD.js可將PSD內的各圖層輸出成PNG圖檔,亦可轉成Base 64圖檔格式,惟輸出時每個圖檔的尺寸並不會根據整體PSD檔大小來配置。
<!DOCTYPE html> <html> <head> <title>psd.js image example</title> <style type="text/css"> body, html { padding: 0; margin: 0; } #dropzone { width: 500px; height: 100px; border: 1px #ababab dashed; margin: 50px auto; } #dropzone p { text-align: center; line-height: 100px; margin: 0; padding: 0; } #image { text-align: center; } </style> <script type="text/javascript" src="psd.min.js"></script> </head> <body> <div id="dropzone"> <p>Drop PSD here</p> </div> <div id="image"></div> <pre id="data"></pre> <script type="text/javascript"> (function () { const PSD = require('psd'); document.getElementById('dropzone').addEventListener('dragover', onDragOver, true); document.getElementById('dropzone').addEventListener('drop', onDrop, true); function onDragOver(e) { e.stopPropagation(); e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; } function onDrop(e) { e.stopPropagation(); e.preventDefault(); PSD.fromEvent(e).then(function (psd) { for (var i = 0; i < psd.layers.length; i ++){ document.getElementById('image').appendChild(psd.layers[i].image.toPng()); } }); } }()); </script> </body> </html>
依照整體PSD配置進行輸出
我們希望讓每個圖片在輸出後能保時相同的尺寸,也就是依照PSD的畫布大小來輸出每一張圖檔,但在原生PSD.js中並不具備這樣的功能,於是我們透過下述的方式來達成:
- 擷取PSD資訊並將圖檔轉為Base 64格式
- 產生與PSD尺寸大小相同的HTML Canvas
- 將產生的Base 64圖檔,依照原始位置放入Canvas中
- 將Canvas轉成PNG圖檔
可以參考我們製作的範例頁面
<!DOCTYPE html> <html> <head> <title>psd.js image example</title> <style type="text/css"> body, html { padding: 0; margin: 0; } #dropzone { width: 500px; height: 100px; border: 1px #ababab dashed; margin: 50px auto; } #dropzone p { text-align: center; line-height: 100px; margin: 0; padding: 0; } #image { text-align: center; } </style> <script type="text/javascript" src="psd.min.js"></script> </head> <body> <div id="dropzone"> <p>Drop PSD here</p> </div> <div id="image"></div> <pre id="data"></pre> <script type="text/javascript"> (function () { const PSD = require('psd'); document.getElementById('dropzone').addEventListener('dragover', onDragOver, true); document.getElementById('dropzone').addEventListener('drop', onDrop, true); function onDragOver(e) { e.stopPropagation(); e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; } function onDrop(e) { e.stopPropagation(); e.preventDefault(); PSD.fromEvent(e).then(function (psd) { const PSDWidth = psd.tree().width; const PSDHeight = psd.tree().height; for (var i = 0; i < psd.layers.length; i ++){ const img = new Image(); img.src = psd.layers[i].image.toBase64(); console.log(psd); const layerWidth = psd.layers[i].width; const layerHeight = psd.layers[i].height; const layerLeft = psd.layers[i].left; const layerTop = psd.layers[i].top; const canvas = document.createElement("canvas"); canvas.setAttribute('class', "canvas"); canvas.width = PSDWidth; canvas.height = PSDHeight; console.log("canvas :", canvas); img.onload = function(){ canvas.getContext("2d").drawImage(img, layerLeft, layerTop, layerWidth, layerHeight); document.getElementById('image').appendChild(canvas); } } }); } }()); </script> </body> </html>
PSD檔案輸出限制
1. 無法輸出帶有效果的圖片
在PSD中我們可能會針對圖層套用一些效果,例如:陰影、光暈、筆畫…等等,但在輸出後的圖檔將不會帶有這些效果。
解決方法:透過點陣化圖層效果,即可輸出相對應的圖檔。
2. 無法輸出帶有遮色片效果的圖片
解決方法:將圖層轉為智慧型物件,即可輸出相對應的圖檔。
3. 無法依圖層混合模式輸出圖片
解決方法:無法解決
Banyak pemain mencari mesin dengan RTP tinggi: slot88.company – slot88.company
Pemain harus memahami aturan masing-masing mesin https://bonaslot.site/# Beberapa kasino memiliki area khusus untuk slot
Ruth goes out to gather grain left behind by the local harvest crews in the fields.The Law of Moses,オナホ リアル
Mesin slot menawarkan pengalaman bermain yang cepat: BonaSlot – bonaslot
Mesin slot sering diperbarui dengan game baru: slot demo pg gratis – slot demo gratis
https://slotdemo.auction/# Slot memberikan kesempatan untuk menang besar
http://garuda888.top/# Pemain harus menetapkan batas saat bermain
Banyak kasino memiliki program loyalitas untuk pemain https://slot88.company/# Slot klasik tetap menjadi favorit banyak orang
Slot dengan bonus putaran gratis sangat populer: bonaslot – bonaslot.site
15 Interesting Facts About Tilt And Turn Window Mechanism You’ve Never
Known tilt turn window Handles
Slot dengan grafis 3D sangat mengesankan: bonaslot – bonaslot.site
https://slotdemo.auction/# Kasino memastikan keamanan para pemain dengan baik
What’s The Current Job Market For Glass Seal Repair Professionals?
glass seal repair
Permainan slot mudah dipahami dan menyenangkan https://preman69.tech/# Mesin slot baru selalu menarik minat
Guide To 3 Wheel Pushchair Travel System: The Intermediate Guide On 3 Wheel Pushchair Travel System 3 wheel
pushchair travel system (Cheri)
slot demo rupiah slotdemo Pemain harus menetapkan batas saat bermain
Каталог финансовых организаций http://srochno-zaym-online.ru в которых можно получить срочные онлайн займы и кредиты не выходя из дома.
https://slot88.company/# Keseruan bermain slot selalu menggoda para pemain
http://bonaslot.site/# Slot memberikan kesempatan untuk menang besar
фильмы без рекламы без регистрации hd rezka сериалы детективы на андроиде
Slot memberikan kesempatan untuk menang besar https://slot88.company/# Kasino menawarkan pengalaman bermain yang seru
Keseruan bermain slot selalu menggoda para pemain: BonaSlot – bonaslot.site
Pemain bisa menikmati slot dari kenyamanan rumah: preman69 – preman69
I’m amazed, I have to admit. Rarely do I come across a blog that’s both educative and entertaining, and without a doubt, you have hit the nail on the head.
The problem is an issue that not enough people
are speaking intelligently about. I am very happy I came across this in my search for something
concerning this.
http://bonaslot.site/# Banyak kasino menawarkan permainan langsung yang seru
The 10 Scariest Things About Private Mental Health Assessment London mental health assessment london (Jeffery)
Каталог финансовых организаций srochno zaym online ru в которых можно получить срочные онлайн займы и кредиты не выходя из дома.
документальные фильмы 2025 Netflix 2025 hdrezka подборки
Pemain bisa menikmati slot dari kenyamanan rumah http://garuda888.top/# Slot klasik tetap menjadi favorit banyak orang
akun demo slot slotdemo Slot klasik tetap menjadi favorit banyak orang