[LIB-9] Add functional for transcoding vector images
[chesshog.git] / chesshog-graphics / src / main / java / org / hedgecode / chess / img / AbstractImageLoader.java
index c9c4f04..0d3681f 100644 (file)
@@ -25,8 +25,6 @@ import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.imageio.ImageIO;
-
 import org.hedgecode.chess.img.fs.FileSystemDetector;
 import org.hedgecode.chess.img.fs.FileSystemContractor;
 
@@ -40,6 +38,8 @@ public abstract class AbstractImageLoader implements ImageLoader {
     private static final String IMAGES_DIR =
             ImageConstants.RESOURCE_ROOT_DIR.concat(ImageConstants.RESOURCE_IMAGES_DIR);
 
+    private static final int DEF_IMAGE_SIZE = 100;
+
     private Type loadType;
 
     private URI imageResourceUri;
@@ -82,6 +82,12 @@ public abstract class AbstractImageLoader implements ImageLoader {
     protected Map<String, BufferedImage> loadImages(String imagesPath, ImageFilter filter)
             throws ImageException
     {
+        return loadImages(imagesPath, filter, DEF_IMAGE_SIZE);
+    }
+
+    protected Map<String, BufferedImage> loadImages(String imagesPath, ImageFilter filter, int size)
+            throws ImageException
+    {
         Map<String, BufferedImage> images = new HashMap<>();
         try (FileSystemContractor fsc = FileSystemDetector.detect(getImageResourceUri())) {
             try (DirectoryStream<Path> ds =
@@ -89,13 +95,17 @@ public abstract class AbstractImageLoader implements ImageLoader {
                                  fsc.getPath(imagesPath), filter
                          )
             ) {
+                ImageFormatShaper formatShaper = ImageFormatShaper.getInstance();
                 for (Path file : ds) {
+                    String fileName = file.getFileName().toString();
+                    String baseName = FilenameUtils.getBaseName(fileName).toLowerCase();
+                    String imageFormat = FilenameUtils.getExtension(fileName).toLowerCase();
                     images.put(
-                            FilenameUtils.getBaseName(
-                                    file.getFileName().toString()
-                            ).toLowerCase(),
-                            ImageIO.read(
-                                    fsc.getResourceAsStream(file)
+                            baseName,
+                            formatShaper.shape(
+                                    imageFormat,
+                                    fsc.getResourceAsStream(file),
+                                    size
                             )
                     );
                 }