JPEG Image komprimieren

Status
Nicht offen für weitere Antworten.

meteora28

Mitglied
Hallo Leute,

ich möchte ein JPEG Image komprimieren.
Wie kann ich das am besten realisieren? Gibt es hierfür vorgefertigte Klassen/Methoden?

Gruß meteora28
 

Civilazi

Bekanntes Mitglied
Da es der Informationen wenige sind, rate ich mal: im io-Paket sind solche Sachen wie zipinput- / zipoutputstream, schau dir das mal an.

Aber: *.jpegs sind doch schon komprimiert oder? Da wird in den meisten Fällen nicht mehr viel zu machen sein.
 

ARadauer

Top Contributor
meine Hilfsklasse...

Java:
package com.poi.fux.nw.carlosweb.schadensabwicklung;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

/**
 * Hilfklasse fïür das Bearbeiten von Bildern
 * @author rad
 *
 */
public class ImageUtil {
	

	/**
	 * liefert aus einem BufferedImage ein JPEG ByteArray
	 * @param img
	 * @return
	 * @throws ImageFormatException
	 * @throws IOException
	 */
	public static byte[] bufferedImageToByteArray(BufferedImage img, String format) throws IOException{
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
		//encoder.encode(img);
		ImageIO.write(img, format, os);
		return os.toByteArray();
	}

	/**
	 *ändert die Größe eines Bildes durch Angabe der neuen Breite
	 * @param image
	 * @param width
	 * @return
	 */
	public static BufferedImage resizeImage(BufferedImage image, int width){		
		float factor = ((float)image.getWidth()/(float)width);
		int height = (int)(image.getHeight()/factor);
		image.flush(); 
		Image thumb = image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING);		
		return getBufferedImage(thumb, width, height); 
	}

	/**
	 * Wandelt ein Image in ein Buffered Image um
	 * @param image
	 * @return
	 */
	public static BufferedImage getBufferedImage(Image image) { 
		int w = image.getWidth(null);
		int h = image.getHeight(null);
		return getBufferedImage(image, w, h);
	} 

	/**
	 * Wandelt ein Image in ein Buffered Image um
	 * @param image
	 * @return
	 */
	public static BufferedImage getBufferedImage(Image image, int witdh, int height) {				
		BufferedImage result = new BufferedImage(witdh, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = result.createGraphics();
		g.drawImage(image, 0, 0, null);
		g.dispose();		
		return result;
	} 


	/**
	 * vielleicht wird das mal interssant, falls es Qualit�ts oder Performace Probleme gibt
	 * @param img
	 * @param targetWidth
	 * @param hint
	 * @param higherQuality
	 * @return
	 */
	public static BufferedImage getScaledInstance(BufferedImage img, int targetWidth, Object hint, boolean higherQuality){
		float factor = ((float)img.getWidth()/(float)targetWidth);
		int targetHeight = (int)(img.getHeight()/factor);
			
		int type = BufferedImage.TYPE_INT_RGB;
		BufferedImage ret = (BufferedImage)img;
		int w, h;
		if (higherQuality) {
//			Use multi-step technique: start with original size, then
//			scale down in multiple passes with drawImage()
//			until the target size is reached
			w = img.getWidth();
			h = img.getHeight();
		} else {
//			Use one-step technique: scale directly from original
//			size to target size with a single drawImage() call
			w = targetWidth;
			h = targetHeight;
		}

		do {
			if (higherQuality && w > targetWidth) {
				w /= 2;
				if (w < targetWidth) {
					w = targetWidth;
				}
			}

			if (higherQuality && h > targetHeight) {
				h /= 2;
				if (h < targetHeight) {
					h = targetHeight;
				}
			}

			BufferedImage tmp = new BufferedImage(w, h, type);
			Graphics2D g2 = tmp.createGraphics();
			g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, hint);
			g2.drawImage(ret, 0, 0, w, h, null);
			g2.dispose();

			ret = tmp;
		} while (w != targetWidth || h != targetHeight);

		return ret;
	}
	


}

Verwendung...
zb...
BufferedImage bi = ImageUtil.getScaledInstance(image, widthForBig, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR, false);


ich weiß nicht ob dir das hilft... aber so in die richtung geht das...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Image als GIF oder JPEG abspeichern Allgemeine Java-Themen 2
RalleYTN JPEG mit CMYK(ohne JAI oder TwelveMonkeys!) Allgemeine Java-Themen 0
C Verschlüsselte JPEG Datei anzeigen Allgemeine Java-Themen 10
C Array als JPEG Allgemeine Java-Themen 3
A jpeg Files mit eigenem Programm öffnen Allgemeine Java-Themen 4
MQue save as jpeg Allgemeine Java-Themen 3
S JPEG Bild übertragen mit RMI ? Allgemeine Java-Themen 4
E JPEG Datei Größe und Qualität ändern (für Thumbnails) Allgemeine Java-Themen 4
C Dateieigenschaften (JPEG) auslesen Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
J jsch direktes streamen in ein image Allgemeine Java-Themen 11
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
G Image in Shape wandeln Allgemeine Java-Themen 1
T Swing Image rotieren Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
C pfad vom Image ausgeben lassen Allgemeine Java-Themen 5
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
G Pixelanzahl aus Raw Image Datei Allgemeine Java-Themen 1
H OCR und Image Processing Allgemeine Java-Themen 4
M Image für PDF nicht verfügbar - Runnable .jar Allgemeine Java-Themen 3
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
K Image zu BufferedImage konvertieren Allgemeine Java-Themen 9
K Image beim catchen ist immer null Allgemeine Java-Themen 9
X Image Processing libary für JavaSE und Android Allgemeine Java-Themen 2
Crashbreaker RCP-View Image öffnen und darstellen Allgemeine Java-Themen 7
S IMAGE ARRAY laden Allgemeine Java-Themen 6
B Image oder GridControl? Allgemeine Java-Themen 8
B Image Thinning Allgemeine Java-Themen 3
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
F Datentypen Floppy-Image-Dateisystem Allgemeine Java-Themen 5
F Image - Ausschnitt bekommen Allgemeine Java-Themen 3
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
N Unable to convolve src image Allgemeine Java-Themen 7
H image in jtextarea/JLabel einbinden... Allgemeine Java-Themen 4
Aigu Bilderkennung / Image Analysis Allgemeine Java-Themen 2
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
M Probleme mit Image Extraction aus PDF Allgemeine Java-Themen 2
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
G sun.awt.image.OffScreenImage Serializable machen Allgemeine Java-Themen 5
T Image in gif umwandeln Allgemeine Java-Themen 14
G itext größe von image Allgemeine Java-Themen 2
T JPanel to Image? Allgemeine Java-Themen 6
K Image Resizer Allgemeine Java-Themen 4
D Image runterscalieren, aber schlechte Quali? Allgemeine Java-Themen 3
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
P Image erzeugen Allgemeine Java-Themen 7
B Image libraries Allgemeine Java-Themen 3
MQue Image über Komponente Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
E Image unterscheiden Allgemeine Java-Themen 16
E Image auf einem JLabel darstellen Allgemeine Java-Themen 3
F BufferedImage -> Image Allgemeine Java-Themen 4
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
T Muster/Zeichen/Texterkennung auf einem Image Allgemeine Java-Themen 9
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
T Disk Image Library (iso,mdf,nrg,bin) Allgemeine Java-Themen 6
S KeyListener! Image Problem! Allgemeine Java-Themen 2
S Image als Background Allgemeine Java-Themen 5
B Image(png) versenden Allgemeine Java-Themen 3
N Image -> cropImage Allgemeine Java-Themen 3
T Image mithilfe von DirectColorModel und Pixel erstellen Allgemeine Java-Themen 3
G Image in der Größe ändern Allgemeine Java-Themen 2
C probleme mit image Allgemeine Java-Themen 4
C Pixelfarbe aus einem image auslesen Allgemeine Java-Themen 6
M Image Skalieren Allgemeine Java-Themen 23
D ByteArray für Image-Icon laden. Allgemeine Java-Themen 4
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
O Image mit transparenten farben wie bei *.GIF ? Allgemeine Java-Themen 3
B Image#getScaledInstance & Graphics2D#drawImage ClassCast Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
T Auf ein Image geklickt Allgemeine Java-Themen 13
J ISO image erzeugen Allgemeine Java-Themen 3
J Wie mache ich den Hintergrund einer Image durchsichtig? Allgemeine Java-Themen 7
G Aus JPanel Image Hohlen Allgemeine Java-Themen 3
D BufferedReader in image umwandeln Allgemeine Java-Themen 3
S Image Datei serializieren Allgemeine Java-Themen 3
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
C Screenshots komprimieren Allgemeine Java-Themen 3
C Dateien komprimieren und verschlüsseln Allgemeine Java-Themen 3
A XML-Daten komprimieren Allgemeine Java-Themen 6
H Daten komprimieren. Allgemeine Java-Themen 9
D tiff (->komprimieren)-> iText(pdf) Allgemeine Java-Themen 2
V PDF's komprimieren Allgemeine Java-Themen 9
B .Jar file komprimieren nach .Jar Allgemeine Java-Themen 4
ElViZ Dateien komprimieren lassen (zb. *.zip) Allgemeine Java-Themen 11
T Datei komprimieren Allgemeine Java-Themen 2
E zip komprimieren Allgemeine Java-Themen 12
N Text verkleinern/komprimieren Allgemeine Java-Themen 11
T Java komprimieren ? Allgemeine Java-Themen 3
M Text komprimieren Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben