From 438b168cad54853a8b419e6c19e639b6d2f70bc0 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Wed, 08 Mar 2017 06:42:10 +0000 Subject: [PATCH] Bild verkleinern (in Arbeit) --- web/ui/index.html | 2 + src/java/de/uhilger/filecms/api/FileMgr.java | 51 ++++++++++++++++++++++++- web/ui/ui.js | 13 ++++++ 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index 840a223..3e1073c 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -20,13 +20,16 @@ import de.uhilger.filecms.data.FileRef; import de.uhilger.filecms.web.Initialiser; +import de.uhilger.wbx.Bild; +import java.awt.Container; +import java.awt.Image; +import java.awt.MediaTracker; +import java.awt.Toolkit; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.io.InputStreamReader; import java.io.Reader; import java.security.Principal; import java.util.ArrayList; @@ -35,7 +38,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.StringEscapeUtils; /** * @@ -299,7 +301,50 @@ } return savedFile; } + + public String bildVerkleinern(String relPath, String bildName) { + File dir = getTargetDir(relPath); + File original = new File(dir, bildName); + Bild bild = new Bild(); + //for (int i = 0; i < Bild.GR.length; i++) { + //int gr = bild.getVariantenGroesse(i); + + String ext = ""; + String nurname = bildName; + int dotpos = bildName.indexOf("."); + if (dotpos > -1) { + ext = bildName.substring(dotpos); + nurname = bildName.substring(0, dotpos); + } + + Image image = Toolkit.getDefaultToolkit().getImage(original.getAbsolutePath()); + MediaTracker mediaTracker = new MediaTracker(new Container()); + mediaTracker.addImage(image, 0); + try { + mediaTracker.waitForID(0); + + if(!mediaTracker.isErrorAny()) { + for(int i = 0; i < Bild.GR.length; i++) { + StringBuffer buf = new StringBuffer(); + buf.append(nurname); + buf.append(bild.getVariantenName(i)); + buf.append(ext); + File newImgFile = new File(dir, buf.toString()); + if(!newImgFile.exists()) { + logger.fine(original.getAbsolutePath() + " " + newImgFile.getAbsolutePath()); + bild.writeImageFile(image, bild.getVariantenGroesse(i), bild.getMimeType(original), original.getAbsolutePath(), newImgFile.getAbsolutePath()); + //bild.writeImageFile(image, photo.getVariantenGroesse(i), photo.getMimetype(), photo.getAbsolutePath(basisPfad), photo.getVariantenName(basisPfad, i)); + } + } + } + } catch(IOException | InterruptedException ex) { + logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); + } + + return "ok"; + } + /* ---- Hilfsfunktionen ---- */ private File getTargetDir(String relPath) { diff --git a/web/ui/index.html b/web/ui/index.html index 4b4f4d2..c5f2586 100644 --- a/web/ui/index.html +++ b/web/ui/index.html @@ -87,6 +87,8 @@ <a id="m-copy" class="dropdown-item" href="#">Kopieren</a> <a id="m-paste" class="dropdown-item" href="#">Einfügen</a> <div class="dropdown-divider"></div> + <a id="m-shrink" class="dropdown-item" href="#">Verkleinern</a> + <div class="dropdown-divider"></div> <a id="m-del" class="dropdown-item" href="#">Löschen</a> </div> </li> diff --git a/web/ui/ui.js b/web/ui/ui.js index a05b1bb..7f19855 100644 --- a/web/ui/ui.js +++ b/web/ui/ui.js @@ -52,6 +52,7 @@ $('#m-cut').on('click', fm_menu_cut); $('#m-copy').on('click', fm_menu_copy); $('#m-paste').on('click', fm_menu_paste); + $('#m-shrink').on('click', fm_menu_shrink); $('#m-test').on('click', fm_menu_test); $('#saveModal').on('hidden.bs.modal', function (e) { $('#modal_ok').attr('onclick','').unbind('click'); @@ -505,6 +506,18 @@ }); } +function fm_menu_shrink() { + var gewaehlte = $('.datei-gewaehlt'); + var fname = $(gewaehlte[0]).text(); + var m = '?c=de.uhilger.filecms.api.FileMgr&m=bildVerkleinern'; + m = m + '&p=' + pfad; + m = m + '&p=' + fname; + var u = '../svc' + m; + fm_get(u, "text", function(resp) { + fm_get_list(pfad); + }); +} + /* * Hier merkt sich die Dateiverwalting die markierten Dateien fuer * eine Dateioperation. Bei cut wird in der 'paste' Operation auf dem Server -- Gitblit v1.9.3