ulrich
2022-02-11 ae1d6348242c3be10a38586c9d21f6187787e8cd
src/de/uhilger/bildhelfer/Verkleinerer.java
@@ -45,7 +45,7 @@
    dateienVerarbeiten(groesse, qualitaet, eingangsOrdner.getAbsolutePath(), ausgabeOrdner.getAbsolutePath());
  }
  private int getIntFromArg(String arg, int defaultValue) {
  public int getIntFromArg(String arg, int defaultValue) {
    try {
      int argValue = Integer.parseInt(arg);
      logger.info("Ausgabegroesse " + argValue);
@@ -56,7 +56,7 @@
    }
  }
  private float getFloatFromArg(String arg, float defaultValue) {
  public float getFloatFromArg(String arg, float defaultValue) {
    try {
      float argValue = Float.parseFloat(arg);
      logger.info("Ausgabequalitaet " + argValue);
@@ -81,13 +81,12 @@
    }
  }
  private void dateienVerarbeiten(int gr, float quality, String inDirName, String outDirName) {
  public void dateienVerarbeiten(int gr, float quality, String inDirName, String outDirName) {
/*
   Java-Code zum Verkleinern von Bildern
   args[0] - Anzahl Pixel an der laengsten Kante
   args[1] - qualitaet JPEG, z.B. 0.75 fuer 75% des Originals
   args[1] - qualitaet, z.B. 0.75 fuer 75% des Originals
   args[2] - Eingangsordner
   args[3] - Ausgabeordner
*/
@@ -109,15 +108,14 @@
        File outDir = new File(outDirName);
        File outFile = new File(outDir, fileList[i].getName());
        logger.info(outFile.getAbsolutePath());
        String fname = fileList[i].getName().toLowerCase();
        try {
          if (fileList[i].isFile() && (fname.endsWith("jpg") || fname.endsWith("jpeg") || fname.endsWith("png"))) {
          Image image = ImageIO.read(fileList[i]);
          MediaTracker mediaTracker = new MediaTracker(new Container());
          mediaTracker.addImage(image, 0);
          mediaTracker.waitForID(0);
          if (!mediaTracker.isErrorAny()) {
            //float quality = Float.parseFloat(args[1]);
            float factor = (float) 0.0;
            BufferedImage thumbImage;
            int imageWidth = image.getWidth(null);
@@ -134,8 +132,7 @@
            double imageRatio = (double)imageWidth / (double)imageHeight;
            if (thumbRatio < imageRatio) {
              thumbHeight = (int)(thumbWidth / imageRatio);
            }
            else {
              } else {
              thumbWidth = (int)(thumbHeight * imageRatio);
            }
@@ -152,16 +149,16 @@
            graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
              //float quality = Float.parseFloat(args[1]);
              float factor = (float) 0.0;
            // 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};
              float[] array = new float[9];
@@ -193,10 +190,8 @@
              imgType = "jpg";
            }
            /*
               14.1.2018: Ausgabe um Qualitaetsparameter erweitert
               Beginn
            */
              // 14.1.2018: Ausgabe um Qualitaetsparameter erweitert   Beginn
            ImageWriter writer = ImageIO.getImageWritersByFormatName(imgType).next();
            ImageWriteParam iwp = writer.getDefaultWriteParam();
            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
@@ -204,7 +199,8 @@
            writer.setOutput(new FileImageOutputStream(outFile));
            writer.write(null, new IIOImage(thumbImage, null, null), iwp);
            writer.dispose();
            /* 14.1.2018 Ende */
              // 14.1.2018 Ende
            }
          }
        } catch (InterruptedException ex) {
          //System.out.println("Error: " + ex.getLocalizedMessage());
@@ -215,13 +211,9 @@
          logger.log(Level.SEVERE, e.getLocalizedMessage(), e);
        }
      }
    } else {
      logger.info("fileList is null or empty");
    }
  }
}