透過網頁讀取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...

46,718 Responses

  1. Get your accessories ready while you’reえろ 人形 waiting for your doll to arrive and then have them handy when the doll is warming up.

  2. McMullen went on to grow his company エロ 人形and sells high-end sex dolls to this day. With the continual development of AI

  3. (did we mention you can totally choose the penis size of your doll?).えろ 人形Don’t add tons of lube, just introduce a little water to reactivate the lube you applied initially.

  4. If your only experience of sex dolls is pop culture images of the old blow-up dolls of the 60s and 70s, 人形 エロit’s time to upgrade your knowledge of sex dolls!

  5. picking out music and just spending time enjoying the rituals before sexえろ 人形.

  6. build as a human. They are a realistic weight and human size. Couple this with a human-like,人形 エロ warm skin and a sex doll can be hugged or touched in much the same way as a human.

  7. Regular maintenance

  8. Without further ado, let’s see what Spring has to bringエロ 人形.

  9. The first day of Spring is here. What goodies will the new season bring?エロ 人形 This week, sex doll brands released a variety of new heads, bodies,

  10. The wig of a sex doll, as an important element to enhance the charm and realism of the doll, 人形エロits maintenance and care are equally important

  11. WM Doll is the most popular sex doll brand in the world, エロ 人形and for good reason. Known for their high quality material and attractive model-like heads,

  12. Not to mention, that total freedom to えろ 人形be in complete control, to explore your deepest desires,

  13. SE Doll shared 2 new photosets of their silicone 161cm Annika. Lately,えろ 人形 they’ve been nailing the Japanese look, especially on previously non-Asian heads like Annika.

  14. Beyond mere pleasure, they offer companionship in the real world, providing 人形エロsolace for individuals enduring extended periods of solitude.

  15. Elsa Babe returned after a long break, WM Doll’s “Bimbo doll”エロ 人形 is almost ready for release, some pretty smiling heads, and a new method of oral cavity cleaning?

  16. There are a few obvious things that we all know are 人形 エロvital to human survival: food. Water. Oxygen.

  17. A male sex doll designed for gay men does represent a えろ 人形financial investment so ensure you don’t store it clothed or wearing accessories,

  18. If your interest lies more in the freedom toえろ 人形 live your wildest fantasies with the best masturbation aid ever invented, delayed gratification might not work for you.

  19. (did we mention you can totally choose the penis size of your doll?).えろ 人形Don’t add tons of lube, just introduce a little water to reactivate the lube you applied initially.

  20. Gently place the wig in warm water, massage lightly with fingertips, 人形エロavoid rubbing vigorously to prevent damage to the wig fibers. After washing, rinse thoroughly with clean water

  21. explains the award-winning Emmy nominated investigative reporter,人形 エロ Jonathan Jones in an article published by Berkley University’s Greater Good Magazine.

  22. “From the time we are in the womb through our elderly years,人形 エロ touch plays a primary role in our development and physical and mental well-being.

  23. Without further ado, let’s see what Spring has to bringエロ 人形.

  24. Follow the manufacturer’s guidelines for specific care instructions tailored to your love doll.

  25. “The need for human touch is one of our most basic, primal needs,”人形 エロ explains Psychology Today.

  26. If you’re looking for companionship from your doll,えろ 人形you might enjoy the process of dressing your doll,

  27. After cleaning, rinse the real doll thoroughly with warm water えろ 人形to remove any soap residue. Make sure to rinse out all the soap from the orifices as well.

  28. I also found more new brands so without further ado, えろ 人形let’s jump straight into the news.

  29. realistic silicone dolls provide a compelling solution.人形エロ The authentic replication of human form, coupled with substantial weight, offers users a heightened sense of pleasure.

  30. Trenttat表示:

    http://stromectol1st.shop/# ivermectin lotion for scabies
    ed pumps

發佈留言

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