ERLEDIGT
JA
JA
ANTWORTEN
16
16
ZUGRIFFE
44127
44127
EMPFEHLEN
-
08.11.04 21:57 #1
- Registriert seit
- Nov 2003
- Beiträge
- 9
Hallo zusammen,
wir müssen für die Uni ein Projekt machen, in dem wir unter anderem JPEGs verkleinern müssen (ne Galerie).
Ich suche jetzt also ein Möglichkeit, wie z.B. bei der GD-Lib in PHP JPEGs mit Verschiedenen Qualitäten verkleinern zu können.
Für alle Tips wäre ich dankbar.
Viele Grüße,
Nils
-
08.11.04 22:08 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
package de.tutorials.test; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; public class Test48 { public static void main(String[] args) { try { Image img = new ImageIcon(ImageIO.read(new File("c:/Beispiel.jpg"))) .getImage(); System.out.println(img.getWidth(null)); System.out.println(img.getHeight(null)); int wNew = 120, hNew = 90; Image scaledImage = img.getScaledInstance(wNew, hNew, Image.SCALE_SMOOTH); BufferedImage outImg = new BufferedImage(wNew, hNew, BufferedImage.TYPE_INT_RGB); Graphics g = outImg.getGraphics(); g.drawImage(scaledImage, 0, 0, null); g.dispose(); ImageIO.write(outImg, "jpeg", new File("c:/Beispiel_small.jpg")); } catch (IOException e) { e.printStackTrace(); } } }
Schneller gehts wenn man das Image über graphics.drawImage(image,newWidth,newHeight,null) zeichnet...
Siehe auch hier:
http://www.tutorials.de/forum/java/2...en-sollte.html
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
08.11.04 23:08 #3
- Registriert seit
- Nov 2003
- Beiträge
- 9
Wow, hätte nicht gedacht, dass das so einfach geht

Ich liebe Java
Vielen Dank für die schnelle Antwort
Nils
-
08.11.04 23:09 #4
- Registriert seit
- Nov 2003
- Beiträge
- 9
Doppelposting
-
21.03.06 22:41 #5
Hellas!
Hab den Code von Thomas in meinem neuen Programm verwendet, das läuft inzwischen auch. Trotzdem kommt es mir vor, als könnten die verkleinerten und gespeicherten Bilder eine bessere Qualität haben. Gibt es hier evtl. Lösungsansätze? zB JPEG bietet doch verschiedene Qualitätstufen (0-100), kann man diese Ansprechen?
lg BillieFann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
25.03.06 01:14 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
package de.tutorials; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class JPEGCompressionExample { /** * @param args */ public static void main(String[] args) throws Exception { BufferedImage image = ImageIO.read(new File("c:/Wasserlilien.jpg")); JPEGImageEncoder jpegImageEncoder = JPEGCodec .createJPEGEncoder(new FileOutputStream( "c:/Wasserlilien_low.jpg")); JPEGEncodeParam param = jpegImageEncoder .getDefaultJPEGEncodeParam(image); param.setQuality(0.5F, true); jpegImageEncoder.encode(image, param); } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
27.03.06 17:44 #7
Vielen Dank! Seh mir das bei Gelegenheit an, aber bin mir sicher, dass ich das verwenden kann.
Nur noch eine andere, kleine Frage... warum gibt es standardmäßig keine Dokumentation zu den com.sun.* Klassen?! In diesen Klassen sind viele nützliche Dinge versteckt, aber woher soll man wissen, dass es sie gibt? Hatte das Problem schoneinmal mit Base64-De/Encoder ... gibt es in diesen Klassen auch schon.
lg BillieFann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
27.03.06 18:18 #8
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Die com.sun....* Klassen sind eigentlich auch nicht fuer den oeffentlichen Gebrauch gedacht... weiterhin ist nicht garantiert, dass diese Klassen auch bei anderen JVM Herstellern vorhanden sind.
Hier eine Version ohne, com.sun....* Klassen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
package de.tutorials; import java.awt.image.BufferedImage; import java.io.File; import java.util.Iterator; import java.util.Locale; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; import javax.imageio.plugins.jpeg.JPEGImageWriteParam; public class JPEGCompressionExample { /** * @param args */ public static void main(String[] args) throws Exception { BufferedImage image = ImageIO.read(new File("c:/Winter_big.jpg")); Iterator iterator = ImageIO.getImageWritersBySuffix("jpeg"); ImageWriter imageWriter = (ImageWriter) iterator.next(); JPEGImageWriteParam imageWriteParam = new JPEGImageWriteParam(Locale .getDefault()); imageWriteParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT); imageWriteParam.setCompressionQuality(0.5F); IIOImage iioImage = new IIOImage(image, null, null); imageWriter.setOutput(ImageIO.createImageOutputStream(new File( "c:/Winter_big_low.jpg"))); imageWriter.write(null, iioImage, imageWriteParam); } }
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
11.04.06 16:08 #9
Neues Problem, mit dieser neuen Speicher-Methode bekomme ich keinen Output mehr auf meine Http-Verbindung.
Also das funktioniert:
Code :1 2 3
// fc = javax.jnlp.FileContents (JavaWebStart) imageWriter.setOutput(ImageIO.createImageOutputStream(fc[i].getOutputStream(true))); imageWriter.write(null, iioImage, imageWriteParam);
Aber ich will die Datei ja nicht überschreiben, sondern an den Server über die Verbindung schiecken und das funktioniert nicht, obwohl die Verbindung steht (EchoServer meldet Verbindung hergestellt, verbindung wieder geschlossen).
Code :1 2 3 4 5 6
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512); imageWriter.setOutput(ImageIO.createImageOutputStream(byteStream)); imageWriter.write(null, iioImage, imageWriteParam); byteStream.writeTo(connection.getOutputStream());
Oder auch...
Code :1 2 3 4
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); imageWriter.setOutput(ImageIO.createImageOutputStream(connection.getOutputStream())); imageWriter.write(null, iioImage, imageWriteParam);
Wo liegt hier der Hund begraben?Fann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
Guten Morgen!
ich hab mal versucht dieses Programm bei mir zum Laufen zu kriegen. Ich benutze einen Javaeditor und habe auch meine Classpath und Path Pfade in die Umgebungsvariablen geschrieben. Doch ich kriege immer noch einen "java.lang.NoClassDefFoundError" Fehler. Kann mir jemand bei diesem Fehler weiterhelfen?
Mfg
Volker
-
15.02.07 08:51 #11MeinerEiner_80 Tutorials.de Gastzugang
Moin!
Wie rufst du denn das Programm auf und wo hast du es gespeichert?
Da die Klasse sich in einem Paket befindet, muss sie auch entsprechend aufgerufen werden.
Beispiel, die Klasse befindet sich in Verzeichnis "F:\examples\de\tutorials\test".
Dann musst du in das Verzeichnis "F:\examples" wechseln und "java de.tutorials.test.Test48" aufrufen..
*grüssle*
MeinerEiner
-
Ja moin!
C:\Dokumente und Einstellungen\Lego\Anwendungsdaten\JavaEditor\Test48.java
Da liegt meine Datei. Ich rufe das Ganze wie gesagt über einen Java-Editor auf und der compiliert das Ganze auch direkt. Ich habe im Anhang eine Screenshot von dem Programm gemacht.
Danke für eure Mühe
Volker
-
15.02.07 09:07 #13MeinerEiner_80 Tutorials.de Gastzugang
Vielleicht habe ich mich nicht deutlich genug ausgedrückt, aber die Paketstruktur eines Programms spiegelt sich direkt in der Dateistruktur wieder. Also, wenn das Programm sich im Paket de.tutorials.test befindet, muss es sich auch in einem Verzeichnis "\de\tutorials\test" befinden, ansonsten kommt es zu der dir beschrieben Exception!
*grüssle*
MeinerEiner
-
Hallo susammen,
ich hab eine andere frage und zwar gib es eine Möglichkeit einen teil von einem bild auszuschneiden und zu speichern bzw ein bild erstellt das nur einen teil von dem ursprünglichen bild besitzt so dass man den rand weglässt ?
so ähnlich wie die methode getScaledInstance. gibst da noch mehr in der richtung?
wär cool
-
03.09.07 02:05 #15
- Registriert seit
- Nov 2003
- Beiträge
- 9
Hallo Bäästy,
mit g.drawImage(...) zeichnest du ja das eingelesene und ggf. skalierte Bild auf das Zielbild.
Dabei kannst du die Startkoordinate mitgeben, also die obere rechte Ecke in der begonnen werden soll, das Ursprungsbild auf das Zielbild zu übertragen.
Sind diese Werte negativ, schneidest du oben und links ab. Sind die Werte größer als Null, hast du in deinem neu angelegten Bild oben und links einen Rahmen um das hinein kopierte.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; public class Test { public static void main(String[] args) throws IOException { Image image = new ImageIcon("/Users/nilseckert/Desktop/test.jpg").getImage(); int cutLeft = 50, cutTop = 500; int width = 1024, height = 1024; BufferedImage targetImage = new BufferedImage(width, height, BufferedImage.SCALE_SMOOTH); Graphics g = targetImage.getGraphics(); g.drawImage(image, -cutLeft, -cutTop, null); g.dispose(); ImageIO.write(targetImage, "jpeg", new File("/Users/nilseckert/Desktop/test-cut.jpg")); } }
Viele Grüße
Nils
Ähnliche Themen
-
JPEG beim Hochladen verkleinern
Von blck im Forum PHPAntworten: 4Letzter Beitrag: 29.06.09, 20:23 -
JPEG als RGB speichern
Von fiacyberz im Forum PHPAntworten: 2Letzter Beitrag: 14.11.07, 10:59 -
Als JPEG speichern?
Von Andre_hainz im Forum Cinema 4DAntworten: 1Letzter Beitrag: 12.09.04, 11:19 -
zu große jpeg verkleinern
Von judith im Forum PhotoshopAntworten: 7Letzter Beitrag: 06.08.04, 17:24 -
[Java] BMPs laden, verändern und speichern
Von Carndret im Forum JavaAntworten: 7Letzter Beitrag: 22.04.03, 11:18





Zitieren


Login





