透過網頁讀取PSD後,依圖層輸出PNG檔案

在前面介紹過網頁可以讀取PSD檔案並擷取到該檔案的資訊,接著我們會希望能透過網頁上傳PSD檔之後,依照圖層來輸出圖片,同樣是利用PSD.js來輔助進行,可以透過我們製作的範例頁面來進行輸出測試。

預設輸出效果


透過PSD.js可將PSD內的各圖層輸出成PNG圖檔,亦可轉成Base 64圖檔格式,惟輸出時每個圖檔的尺寸並不會根據整體PSD檔大小來配置。

圖層配置

Layer 1 (421 x 38)
Layer 2 (490 x 479)
Layer 3 (1024 x 800)

<!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中並不具備這樣的功能,於是我們透過下述的方式來達成:

  1. 擷取PSD資訊並將圖檔轉為Base 64格式
  2. 產生與PSD尺寸大小相同的HTML Canvas
  3. 將產生的Base 64圖檔,依照原始位置放入Canvas中
  4. 將Canvas轉成PNG圖檔
圖層配置
Layer 1 (1024 x 800)
Layer 2 (1024 x 800)
Layer 3 (1024 x 800)

可以參考我們製作的範例頁面

<!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. 無法輸出帶有遮色片效果的圖片

圖層設定
Before
After

解決方法:將圖層轉為智慧型物件,即可輸出相對應的圖檔。

3. 無法依圖層混合模式輸出圖片

Layer 1
Layer 2
Layer 3
Layer 4

解決方法:無法解決

You may also like...

103,311 Responses

  1. What’s The Job Market For Buy UK Drivers Licence Professionals Like?
    Buy uk drivers Licence

  2. Santo表示:

    A Rewind A Trip Back In Time: What People Talked
    About Audi Car Keys Replacement 20 Years Ago replace audi key (Santo)

  3. The Reasons Why Best Fridge Is The Obsession Of Everyone In 2024 Best brands refrigerators

  4. Miguel表示:

    10 Signs To Watch For To Look For A New Bmw Key
    replacement bmw key (Miguel)

  5. Jennie表示:

    Buy Real UK Driving License Tools To Streamline
    Your Daily Lifethe One Buy Real UK Driving License Trick
    Every Person Should Know buy real uk driving license (Jennie)

  6. Speak “Yes” To These 5 Car Accident Lawyer Near Me Tips
    car crash injury lawyer

  7. Joey表示:

    20 Tools That Will Make You Better At Best Fridge Freezer refrigerator brands best (Joey)

  8. 11 Ways To Completely Sabotage Your Inattentive Add In Women Adhd In Women Quiz

  9. Iola表示:

    The 10 Scariest Things About Professional SEO Services professional
    seo services (Iola)

  10. Forget Car Accident Case: 10 Reasons Why You Do Not Need It Car Wreck Attorneys Near Me

  11. The Most Hilarious Complaints We’ve Been Hearing About Hiring
    Truck Accident Lawyers lawyers truck Accident

  12. Patio Door Track Repair Tools To Make Your Everyday Lifethe Only
    Patio Door Track Repair Trick That Everyone Should Be Able To Patio Door Track Repair

  13. BrettTIT表示:

    best price for viagra 100mg: Cheap generic Viagra online – Generic Viagra online

  14. Bradley表示:

    7 Things You’ve Never Known About Auto Accident
    Lawyers Near Me good car accident attorneys – Bradley

  15. Barrybib表示:

    Cheap Cialis: buy cialis online – Generic Cialis price

  16. Tayla表示:

    How Much Do Car Wreck Lawyer Experts Make? attorney for car crash
    (Tayla)

  17. Denice表示:

    10 Tell-Tale Signals You Need To Look For A New Wine Cooler Fridge wine and beverage fridge (Denice)

  18. See What Mitsubishi Key Tricks The Celebs Are
    Utilizing mitsubishi key – https://blogfreely.Net

  19. This Is The History Of Motorized Scooters In 10 Milestones cheap
    electric Mobility scooters for Sale – http://Www.metooo.co.uk,

  20. The Best Car Accident Lawyer Near Me Tricks To Transform Your Life best car accident
    lawyer near me [https://www.pocock.com]

  21. You Are Responsible For A Asbestos Claims Budget? 12 Top Ways To Spend Your
    Money asbestos attorneys (https://zenwriting.net)

  22. The Story Behind Diagnose ADHD Can Haunt You Forever!
    how to diagnose adhd in adults

  23. Charlesbot表示:

    https://fastpillseasy.com/# ed online treatment

  24. 5 Laws Everyone Working In Replacement Lock For Upvc Door Should Know Window Lock Repair Near Me

  25. Arianne表示:

    Could Adults Toy For Men Be The Key To 2023’s Resolving?

    adult toys for her (Arianne)

  26. Sixn.Net表示:

    How To Design And Create Successful Asbestos And Peritoneal Mesothelioma Tutorials
    On Home Mesothelioma Lawsuits – Sixn.Net,

  27. Indisputable Proof You Need Mesothelioma Asbestos Claims asbestos lawsuits

  28. A Productive Rant About Ghost 2 Immobiliser Review car Immobiliser Ghost

  29. The Reason Head Injury Compensation Claims Is Fast Becoming The Hottest Trend Of 2023 Injury Attorney Near Me

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。