From 9ec1f886cdb2d60600ddabaeb340ddf70f82c9c7 Mon Sep 17 00:00:00 2001
From: ulrich <not disclosed>
Date: Sat, 13 Jan 2018 17:41:13 +0000
Subject: [PATCH] Qualitaet als Parameter hinzugefuegt
---
src/kleiner.sh | 4 ++--
src/bilder.groovy | 45 +++++++++++++++++++++++++--------------------
2 files changed, 27 insertions(+), 22 deletions(-)
diff --git a/src/bilder.groovy b/src/bilder.groovy
index c7e9131..7a14ff1 100644
--- a/src/bilder.groovy
+++ b/src/bilder.groovy
@@ -17,21 +17,26 @@
import java.lang.Integer;
/*
- Skript zum Verkleinern von Bildern mit Hilfe
+ Skript zum Verkleinern von Bildern mit Hilfe
der Klasse Bild
+
+ args[0] - Anzahl Pixel an der laengsten Kante
+ args[1] - qualitaet JPEG, z.B. 75 fuer 75%
+ args[2] - Eingangsordner
+ args[3] - Ausgabeordner
*/
FileNameMap fileNameMap = URLConnection.getFileNameMap();
int width = Integer.parseInt(args[0]);
int height = width;
-String inDirName = args[1];
-String outDirName = args[2];
+String inDirName = args[2];
+String outDirName = args[3];
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(outDirName);
File outFile = new File(outDir, fileList[i].getName());
System.out.println(outFile.getAbsolutePath());
@@ -41,17 +46,17 @@
try {
mediaTracker.waitForID(0);
if (!mediaTracker.isErrorAny()) {
-
- int quality = 90;
+
+ int quality = Integer.parseInt(args[1]);
float factor = (float) 0.0;
-
+
BufferedImage thumbImage;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
int thumbWidth = width;
int thumbHeight = height;
if(imageWidth < width) {
- thumbWidth = imageWidth;
+ thumbWidth = imageWidth;
}
if(imageHeight < height) {
thumbHeight = imageHeight;
@@ -64,9 +69,9 @@
else {
thumbWidth = (int)(thumbHeight * imageRatio);
}
-
- String mimeType = fileNameMap.getContentTypeFor("file://" + fileList[i].getAbsolutePath());
-
+
+ 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
if(mimeType.contains("jpeg") || mimeType.contains("png")) {
@@ -77,7 +82,7 @@
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};
@@ -87,7 +92,7 @@
/*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];
@@ -104,8 +109,8 @@
ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
thumbImage = cOp.filter(thumbImage, null);
}
- // 30.7.2007: sharpening hinzugefuegt (Ende)
-
+ // 30.7.2007: sharpening hinzugefuegt (Ende)
+
String imgType;
if(mimeType.contains("jpg")) {
imgType = "jpg";
@@ -118,14 +123,14 @@
} else {
imgType = "jpg";
}
-
- ImageIO.write(thumbImage, imgType, outFile);
+
+ 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
+}
diff --git a/src/kleiner.sh b/src/kleiner.sh
index 309ba1a..78988a7 100644
--- a/src/kleiner.sh
+++ b/src/kleiner.sh
@@ -10,7 +10,7 @@
# Docker Container. Auf diese Weise koennen Bilder im Dateisystem der Maschine,
# auf der Docker laeuft, verwendet werden.
#
-# Aufruf mit ./kleiner.sh [groesse] [eingangsordner] [ausgangsordner]
+# Aufruf mit ./kleiner.sh [groesse] [qualitaet] [eingangsordner] [ausgangsordner]
# Beispiel ./kleiner.sh 1200 /scripts/in /scripts/out
#
# Liegen dieses Skript (kleiner.sh) und das Groovy-Skript bilder.groovy
@@ -21,4 +21,4 @@
# Bilddateien in /scripts/in auf eine Laenge von 1.200 Bildpunkten entlang
# der laengsten Kante verkleinert und in /scripts/out abgelegt werden.
-docker run --rm -v "$PWD":/scripts -w /scripts --name groovy groovy:alpine groovy bilder.groovy $1 $2 $3
+docker run --rm -v "$PWD":/scripts -w /scripts --name groovy groovy:alpine groovy bilder.groovy $1 $2 $3 $4
--
Gitblit v1.9.3