From 874757d581444ecaf1c65836b00bc91e41cfc9ce Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Mon, 28 Aug 2017 13:08:00 +0000
Subject: [PATCH] bilder-Skript aufgeraeumt

---
 src/bilder-alt.groovy |  234 +++++++++++++++++++++++++++++
 src/bilder.groovy     |  225 +++++++--------------------
 2 files changed, 295 insertions(+), 164 deletions(-)

diff --git a/src/bilder-alt.groovy b/src/bilder-alt.groovy
new file mode 100644
index 0000000..4bab866
--- /dev/null
+++ b/src/bilder-alt.groovy
@@ -0,0 +1,234 @@
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+import java.awt.MediaTracker;
+import java.awt.Container;
+import java.awt.Toolkit;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.FileNameMap;
+import java.net.URLConnection;
+import javax.imageio.ImageIO;
+import java.lang.Integer;
+
+/*
+	Skript zum Verkleinern von Bildern mit Hilfe 
+	der Klasse Bild
+*/
+
+File inFile = new File(args[1]);
+File[] fileList = inFile.listFiles();
+if(fileList != null && fileList.length > 0) {
+	for(int i = 0; i < fileList.length; i++) {
+		System.out.println(fileList[i].getAbsolutePath());
+		
+		File outDir = new File(args[2]);
+		File outFile = new File(outDir, fileList[i].getName());
+		System.out.println(outFile.getAbsolutePath());
+    //java.awt.Image image = (java.awt.Image) Toolkit.getDefaultToolkit().getImage(fileList[i].getAbsolutePath());
+		Image image = ImageIO.read(fileList[i]);
+    MediaTracker mediaTracker = new MediaTracker(new Container());
+    mediaTracker.addImage(image, 0);
+    try {
+      mediaTracker.waitForID(0);
+      if (!mediaTracker.isErrorAny()) {
+        Bild bild = new Bild();
+        bild.writeImageFile(image, Integer.parseInt(args[0]), bild.getMimeType(fileList[i]), new File(outDir, fileList[i].getName()).getAbsolutePath());
+      }
+    } catch (InterruptedException ex) {
+      System.out.println("Error: " + ex.getLocalizedMessage());
+    }		
+		
+	}
+} else {
+	System.out.println("fileList is null or empty");
+}
+
+
+
+/*
+	Klasse Bild
+*/
+
+public class Bild {
+  
+  public static final int WINZIG = 0;
+  public static final int KLEIN = 1;
+  public static final int SEMI = 2;
+  public static final int MITTEL = 3;
+  public static final int GROSS = 4;
+  
+  public String[] GRNAME; // = {"-w", "-k", "-s", "-m", "-g"};
+  public int[] GR; // = {120, 240, 500, 700, 1200};
+	
+	public Bild() {
+		GRNAME = new String[5]
+		GRNAME[0] = "-w";
+		GRNAME[1] = "-k";
+		GRNAME[2] = "-s";
+		GRNAME[3] = "-m";
+		GRNAME[4] = "-g";
+		
+		GR = new int[5];
+		GR[0] = 120;
+		GR[1] = 240;
+		GR[2] = 500;
+		GR[3] = 700;
+		GR[4] = 1200;
+		
+	}
+  
+  public void writeImageStream(Image image, int gr, String mimeType, OutputStream out) throws InterruptedException, IOException {
+    ImageIO.write(getReducedImage(image, gr, mimeType), imgType(mimeType), out);
+  }
+  
+  /**
+   * 
+   * @param image
+   * @param gr
+   * @param mimeType
+   * @param vName Name der verkleinerten Datei
+   * @throws InterruptedException
+   * @throws IOException 
+   */
+  public void writeImageFile(BufferedImage image, int gr, String mimeType, String vName) throws InterruptedException, IOException {
+    ImageIO.write(getReducedImage(image, gr, mimeType), imgType(mimeType), new File(vName));
+  }
+  
+  private BufferedImage getReducedImage(Image image, int gr, String mimeType) throws InterruptedException, IOException {
+    BufferedImage img;
+    int q = 90;
+    float sh = (float) 0.0;
+    if(mimeType.contains("jpeg")) {
+      img = getReducedImageImpl(image, gr, gr, q, sh, false);
+    } else {
+      img = getReducedImageImpl(image, gr, gr, q, sh, true);
+    }
+    return img;
+  }
+ 
+  /**
+   * Eine in Groesse und Qualitaet verringerte Bilddatei erzeugen
+   * @param image  Ablageort und Name der Bilddatei
+   * @param width  neue Breite
+   * @param height  neue hoehe
+   * @param quality neue Qualitaet (0 - 100)
+   * @param factor Faktor fuer Schaerfe / Unschaerfe (z.B. -0.15f fuer leichte Unschaerfe, 0.05f fuer leichtes Nachschaerfen)
+   * @param withTransparency ob Transparenz benoetigt wird
+   * @return neues, in Groesse und Qualitaet entsprechend verringertes Bild
+   * @throws java.lang.InterruptedException
+   * @throws java.io.FileNotFoundException
+   */
+  public BufferedImage getReducedImageImpl(BufferedImage image, int width, int height, int quality, float factor, boolean withTransparency) 
+  throws InterruptedException, FileNotFoundException, IOException {
+ 
+    int imageWidth = image.getWidth(null);
+        int imageHeight = image.getHeight(null);
+ 
+      int thumbWidth = width;
+        int thumbHeight = height;
+    if(imageWidth < width) {
+      thumbWidth = imageWidth;    
+    }
+    if(imageHeight < height) {
+      thumbHeight = imageHeight;
+    }
+        double thumbRatio = (double)thumbWidth / (double)thumbHeight;
+        double imageRatio = (double)imageWidth / (double)imageHeight;
+        if (thumbRatio < imageRatio) {
+            thumbHeight = (int)(thumbWidth / imageRatio);
+        }
+        else {
+            thumbWidth = (int)(thumbHeight * imageRatio);
+        }
+ 
+        // draw original image to thumbnail image object and
+        // scale it to the new size on-the-fly
+        //BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
+    BufferedImage thumbImage;
+    if(withTransparency) {
+        thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_ARGB);
+    } else {
+      thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
+    }
+        Graphics2D graphics2D = thumbImage.createGraphics();
+        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+        graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
+ 
+        // 30.7.2007: sharpening hinzugefuegt (Anfang)
+        //float factor = -0.15f; // minus = sharpen, plus = soften
+        //float[] sharpenArray = {0, -1, 0, -1, 5, -1, 0, -1, 0};
+    
+    /*
+      30.6.2013: sharpening als Weichmacher nur, wenn Bild < 400
+    */
+    /*if(thumbWidth < 400 || thumbHeight < 400) {
+      factor = 0.1f;
+    }*/
+    
+        if(factor != (float) 0.0) {
+            //float[] array = {0, factor, 0, factor, 1-(factor*4), factor, 0, factor, 0};
+						float[] array = new float[9];
+						array[0] = 0;
+						array[1] = factor;
+						array[2] = 0;
+						array[3] = factor;
+						array[4] = 1-(factor*4);
+						array[5] = factor;
+						array[6] = 0;
+						array[7] = factor;
+						array[8] = 0;
+            Kernel kernel = new Kernel(3, 3, array);
+            ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
+            thumbImage = cOp.filter(thumbImage, null);
+        }
+        // 30.7.2007: sharpening hinzugefuegt (Ende)
+    
+    return thumbImage;
+  }
+  
+  public String imgType(String mimeType) {
+    String imgType;
+    if(mimeType.contains("jpg")) {
+      imgType = "jpg";
+    } else if(mimeType.contains("jpeg")) {
+      imgType = "jpg";
+    } else if(mimeType.contains("png")) {
+      imgType = "png";
+    } else if(mimeType.contains("gif")) {
+      imgType = "gif";
+    } else {
+      imgType = "jpg";
+    }
+    return imgType;
+  }
+  
+  /**
+   * 
+   * @param v Bild.WINZIG .. Bild.GROSS
+   * @return Länge der längsten Kante in Bildpunkten
+   */
+  public int getVariantenGroesse(int v) {
+    return GR[v];
+  }
+  
+  public String getVariantenName(int v) {
+    return GRNAME[v];
+  }
+  
+  public String getMimeType(File file) {
+    String absName = file.getAbsolutePath();
+    FileNameMap fileNameMap = URLConnection.getFileNameMap();
+    return fileNameMap.getContentTypeFor("file://" + absName);    
+  }
+}
+
+
+
+
+
diff --git a/src/bilder.groovy b/src/bilder.groovy
index 4bab866..c7e9131 100644
--- a/src/bilder.groovy
+++ b/src/bilder.groovy
@@ -21,141 +21,59 @@
 	der Klasse Bild
 */
 
-File inFile = new File(args[1]);
+FileNameMap fileNameMap = URLConnection.getFileNameMap();
+int width = Integer.parseInt(args[0]);
+int height = width;
+String inDirName = args[1];
+String outDirName = args[2];
+File inFile = new File(inDirName);
 File[] fileList = inFile.listFiles();
 if(fileList != null && fileList.length > 0) {
 	for(int i = 0; i < fileList.length; i++) {
 		System.out.println(fileList[i].getAbsolutePath());
-		
-		File outDir = new File(args[2]);
+    		
+		File outDir = new File(outDirName);
 		File outFile = new File(outDir, fileList[i].getName());
 		System.out.println(outFile.getAbsolutePath());
-    //java.awt.Image image = (java.awt.Image) Toolkit.getDefaultToolkit().getImage(fileList[i].getAbsolutePath());
 		Image image = ImageIO.read(fileList[i]);
     MediaTracker mediaTracker = new MediaTracker(new Container());
     mediaTracker.addImage(image, 0);
     try {
       mediaTracker.waitForID(0);
       if (!mediaTracker.isErrorAny()) {
-        Bild bild = new Bild();
-        bild.writeImageFile(image, Integer.parseInt(args[0]), bild.getMimeType(fileList[i]), new File(outDir, fileList[i].getName()).getAbsolutePath());
-      }
-    } catch (InterruptedException ex) {
-      System.out.println("Error: " + ex.getLocalizedMessage());
-    }		
-		
-	}
-} else {
-	System.out.println("fileList is null or empty");
-}
-
-
-
-/*
-	Klasse Bild
-*/
-
-public class Bild {
-  
-  public static final int WINZIG = 0;
-  public static final int KLEIN = 1;
-  public static final int SEMI = 2;
-  public static final int MITTEL = 3;
-  public static final int GROSS = 4;
-  
-  public String[] GRNAME; // = {"-w", "-k", "-s", "-m", "-g"};
-  public int[] GR; // = {120, 240, 500, 700, 1200};
-	
-	public Bild() {
-		GRNAME = new String[5]
-		GRNAME[0] = "-w";
-		GRNAME[1] = "-k";
-		GRNAME[2] = "-s";
-		GRNAME[3] = "-m";
-		GRNAME[4] = "-g";
-		
-		GR = new int[5];
-		GR[0] = 120;
-		GR[1] = 240;
-		GR[2] = 500;
-		GR[3] = 700;
-		GR[4] = 1200;
-		
-	}
-  
-  public void writeImageStream(Image image, int gr, String mimeType, OutputStream out) throws InterruptedException, IOException {
-    ImageIO.write(getReducedImage(image, gr, mimeType), imgType(mimeType), out);
-  }
-  
-  /**
-   * 
-   * @param image
-   * @param gr
-   * @param mimeType
-   * @param vName Name der verkleinerten Datei
-   * @throws InterruptedException
-   * @throws IOException 
-   */
-  public void writeImageFile(BufferedImage image, int gr, String mimeType, String vName) throws InterruptedException, IOException {
-    ImageIO.write(getReducedImage(image, gr, mimeType), imgType(mimeType), new File(vName));
-  }
-  
-  private BufferedImage getReducedImage(Image image, int gr, String mimeType) throws InterruptedException, IOException {
-    BufferedImage img;
-    int q = 90;
-    float sh = (float) 0.0;
-    if(mimeType.contains("jpeg")) {
-      img = getReducedImageImpl(image, gr, gr, q, sh, false);
-    } else {
-      img = getReducedImageImpl(image, gr, gr, q, sh, true);
-    }
-    return img;
-  }
- 
-  /**
-   * Eine in Groesse und Qualitaet verringerte Bilddatei erzeugen
-   * @param image  Ablageort und Name der Bilddatei
-   * @param width  neue Breite
-   * @param height  neue hoehe
-   * @param quality neue Qualitaet (0 - 100)
-   * @param factor Faktor fuer Schaerfe / Unschaerfe (z.B. -0.15f fuer leichte Unschaerfe, 0.05f fuer leichtes Nachschaerfen)
-   * @param withTransparency ob Transparenz benoetigt wird
-   * @return neues, in Groesse und Qualitaet entsprechend verringertes Bild
-   * @throws java.lang.InterruptedException
-   * @throws java.io.FileNotFoundException
-   */
-  public BufferedImage getReducedImageImpl(BufferedImage image, int width, int height, int quality, float factor, boolean withTransparency) 
-  throws InterruptedException, FileNotFoundException, IOException {
- 
-    int imageWidth = image.getWidth(null);
+        
+        int quality = 90;
+        float factor = (float) 0.0;
+        
+        BufferedImage thumbImage;
+        int imageWidth = image.getWidth(null);
         int imageHeight = image.getHeight(null);
- 
-      int thumbWidth = width;
+        int thumbWidth = width;
         int thumbHeight = height;
-    if(imageWidth < width) {
-      thumbWidth = imageWidth;    
-    }
-    if(imageHeight < height) {
-      thumbHeight = imageHeight;
-    }
+        if(imageWidth < width) {
+          thumbWidth = imageWidth;    
+        }
+        if(imageHeight < height) {
+          thumbHeight = imageHeight;
+        }
         double thumbRatio = (double)thumbWidth / (double)thumbHeight;
         double imageRatio = (double)imageWidth / (double)imageHeight;
         if (thumbRatio < imageRatio) {
-            thumbHeight = (int)(thumbWidth / imageRatio);
+          thumbHeight = (int)(thumbWidth / imageRatio);
         }
         else {
-            thumbWidth = (int)(thumbHeight * imageRatio);
+          thumbWidth = (int)(thumbHeight * imageRatio);
         }
  
+        String mimeType = fileNameMap.getContentTypeFor("file://" + fileList[i].getAbsolutePath());    
+        
         // draw original image to thumbnail image object and
         // scale it to the new size on-the-fly
-        //BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
-    BufferedImage thumbImage;
-    if(withTransparency) {
-        thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_ARGB);
-    } else {
-      thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
-    }
+        if(mimeType.contains("jpeg") || mimeType.contains("png")) {
+          thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
+        } else {
+          thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_ARGB);
+        }
         Graphics2D graphics2D = thumbImage.createGraphics();
         graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
         graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
@@ -163,13 +81,12 @@
         // 30.7.2007: sharpening hinzugefuegt (Anfang)
         //float factor = -0.15f; // minus = sharpen, plus = soften
         //float[] sharpenArray = {0, -1, 0, -1, 5, -1, 0, -1, 0};
-    
-    /*
-      30.6.2013: sharpening als Weichmacher nur, wenn Bild < 400
-    */
-    /*if(thumbWidth < 400 || thumbHeight < 400) {
-      factor = 0.1f;
-    }*/
+        /*
+          30.6.2013: sharpening als Weichmacher nur, wenn Bild < 400
+        */
+        /*if(thumbWidth < 400 || thumbHeight < 400) {
+          factor = 0.1f;
+        }*/
     
         if(factor != (float) 0.0) {
             //float[] array = {0, factor, 0, factor, 1-(factor*4), factor, 0, factor, 0};
@@ -187,48 +104,28 @@
             ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
             thumbImage = cOp.filter(thumbImage, null);
         }
-        // 30.7.2007: sharpening hinzugefuegt (Ende)
-    
-    return thumbImage;
-  }
-  
-  public String imgType(String mimeType) {
-    String imgType;
-    if(mimeType.contains("jpg")) {
-      imgType = "jpg";
-    } else if(mimeType.contains("jpeg")) {
-      imgType = "jpg";
-    } else if(mimeType.contains("png")) {
-      imgType = "png";
-    } else if(mimeType.contains("gif")) {
-      imgType = "gif";
-    } else {
-      imgType = "jpg";
-    }
-    return imgType;
-  }
-  
-  /**
-   * 
-   * @param v Bild.WINZIG .. Bild.GROSS
-   * @return Länge der längsten Kante in Bildpunkten
-   */
-  public int getVariantenGroesse(int v) {
-    return GR[v];
-  }
-  
-  public String getVariantenName(int v) {
-    return GRNAME[v];
-  }
-  
-  public String getMimeType(File file) {
-    String absName = file.getAbsolutePath();
-    FileNameMap fileNameMap = URLConnection.getFileNameMap();
-    return fileNameMap.getContentTypeFor("file://" + absName);    
-  }
-}
-
-
-
-
-
+        // 30.7.2007: sharpening hinzugefuegt (Ende)        
+        
+        String imgType;
+        if(mimeType.contains("jpg")) {
+          imgType = "jpg";
+        } else if(mimeType.contains("jpeg")) {
+          imgType = "jpg";
+        } else if(mimeType.contains("png")) {
+          imgType = "png";
+        } else if(mimeType.contains("gif")) {
+          imgType = "gif";
+        } else {
+          imgType = "jpg";
+        }
+        
+        ImageIO.write(thumbImage, imgType, outFile);                
+      }
+    } catch (InterruptedException ex) {
+      System.out.println("Error: " + ex.getLocalizedMessage());
+    }		
+		
+	}
+} else {
+	System.out.println("fileList is null or empty");
+}
\ No newline at end of file

--
Gitblit v1.9.3