OSDN Git Service

PSD出力時のイメージ構成時にレンダリングヒントを使うか設定に従うように修正。
authorseraphy <seraphy@users.osdn.me>
Thu, 31 Jan 2019 01:50:47 +0000 (10:50 +0900)
committerseraphy <seraphy@users.osdn.me>
Thu, 31 Jan 2019 01:50:47 +0000 (10:50 +0900)
src/main/java/charactermanaj/graphics/io/ImageSaveHelper.java
src/main/java/charactermanaj/graphics/io/PSDCreator.java

index 86228f6..a317d60 100644 (file)
@@ -613,7 +613,7 @@ public class ImageSaveHelper {
                ZipOutputStream zos = new ZipOutputStream(outFile);
                try {
                        zos.setEncoding(zipNameEncoding);
-                       
+
                        if (layerImages != null) {
                                for (LayerImage layerImage : layerImages) {
                                        String partsName = layerImage.getPartsName();
@@ -668,6 +668,7 @@ public class ImageSaveHelper {
                }
 
                AppConfig appConfig = AppConfig.getInstance();
+               PSDCreator.setUseRenderingHints(appConfig.isEnableRenderingHints()); // レンダリングヒントの使用
                PSDCreator.setUseRLECompression(appConfig.isUseRLECompressionForPSD()); // RLE圧縮の有無
 
                // PSDデータ作成
index 0ff9346..2ea1a07 100644 (file)
@@ -1,6 +1,7 @@
 package charactermanaj.graphics.io;
 
 import java.awt.Graphics2D;
+import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.awt.image.DataBufferInt;
 import java.awt.image.WritableRaster;
@@ -117,6 +118,19 @@ public final class PSDCreator {
        }
 
        /**
+        * レンダリングヒントを使うか?
+        */
+       private static boolean useRenderingHints = true;
+
+       public static boolean isUseRenderingHints() {
+               return useRenderingHints;
+       }
+
+       public static void setUseRenderingHints(boolean useRenderingHints) {
+               PSDCreator.useRenderingHints = useRenderingHints;
+       }
+
+       /**
         * レイヤーを指定してPSDデータを作成する
         * @param layerDatas レイヤーのコレクション、順番に重ねられる
         * @return PSDデータ
@@ -388,6 +402,18 @@ public final class PSDCreator {
 
                Graphics2D g = cimg.createGraphics();
                try {
+                       if (isUseRenderingHints()) {
+                               // リンダリングヒントを使う
+                               g.setRenderingHint(
+                                               RenderingHints.KEY_ALPHA_INTERPOLATION,
+                                               RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
+                               g.setRenderingHint(
+                                               RenderingHints.KEY_COLOR_RENDERING,
+                                               RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+                               g.setRenderingHint(
+                                               RenderingHints.KEY_RENDERING,
+                                               RenderingHints.VALUE_RENDER_QUALITY);
+                       }
                        for (LayerData layerData : layerDatas) {
                                BufferedImage img = layerData.getImage();
                                int w = img.getWidth();