Portal > Foren > Java > Desktop-Applikationen und Grafik > weniger Bits pro Pixel
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 13.03.2008, 16:51 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 13.03.2008
Beiträge: 5
Standard weniger Bits pro Pixel

Hallo Leute,

Code:
BufferedImage image = reader.read( 0 );
 if( image.getRaster().getSampleModel().getSampleSize( 0 )>8 ) {
   image = reduceSampleSize( image );
 }
wie ihr seht habe ich ein BufferedImage image. Falls image mit mehr als 8 Bit pro Pixel kodiert ist, soll das BufferedImage in eines umgewandelt werden, bei dem das nicht mehr der Fall ist (, weil der JPEGImageWriter später sonst nicht damit klar kommt).
Ich habe die letzten Stunden damit verbracht eine Implementierung von reduceSampleSize() zu finden. Meine aktuelle liefert ein stark verrauschtes Bild
Code:
private BufferedImage reduceSampleSize( BufferedImage image )
{
  ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType( BufferedImage.TYPE_INT_RGB );
  BufferedImage image2 = typeSpecifier.createBufferedImage( image.getWidth(),image.getHeight() );
  WritableRaster writableRaster = image2.getRaster();
  writableRaster.setRect( image.getData() );
  return image2;
}
Ich kenn mich mit der Image-API nicht besonders aus. Meine Versuche nur das SampleModel auszutauschen und das ColorModel von image zu übernehmen und Farbtransformationen mit ColorConvertOp sind alle gescheitert.
Wißt ihr wie man das richtig macht?

Gruß,
simon
simon.void ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2008, 15:43 Nach oben    #2
Neuer Benutzer
 
Registriert seit: 13.03.2008
Beiträge: 5
Standard

ich habe euch mal den Sourcecode hochgeladen:
http://www.file-upload.net/download-...r.zip.zip.html
simon.void ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2008, 15:46 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 13.03.2008
Beiträge: 5
Standard

nach dem Starten der main-Methode in Helper wird auch das konvertierte (und verrauschte) Bild angezeigt.
simon.void ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 00:59 Nach oben    #4
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

Eigentlich hab ich nicht viel mit Bildmanupulation via Java zu tun, aber nach bisschen rum probieren kam ich auf diese Lösung;

Code:
       private BufferedImage reduceSampleSize(BufferedImage image) {
		ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier
				.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
		BufferedImage image2 = typeSpecifier.createBufferedImage(image
				.getWidth(), image.getHeight());
		WritableRaster writableRaster = image2.getRaster();
		writableRaster.setRect(image.getData());
		return image2;
	}
Ist es das was du möchtest?
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.03.2008, 09:55 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 13.03.2008
Beiträge: 5
Standard

Zitat:
Zitat von Xean Beitrag anzeigen
Ist es das was du möchtest?
Das ist der Code mit dem ich angefangen habe(!) und der funktioniert leider nicht mit dem png-Bild in der Zipdatei.
Ich habe es jetzt aber raus. Ecplipse hat mir die richtige Funktion vorgeschlagen, nicht image.getRaster().setRect(...) sondern einfach image.setRGB(...).
Die Methode sieht jetzt so aus:
Code:
private BufferedImage reduceSampleSize( BufferedImage image )
{
  final int width  = image.getWidth();
  final int height = image.getHeight();
  BufferedImage image2 = new BufferedImage( width,height,BufferedImage.TYPE_INT_RGB );
  for( int w=0;w<width;w++ ) {
    for( int h=0;h<height;h++ ) {
      image2.setRGB( w,h,image.getRGB( w,h ) );
    }
  }
  return image2;
}
Gruß,
simon

Geändert von simon.void (17.03.2008 um 13:02 Uhr).
simon.void ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
x und y Wert nach Pixel umrechnen Byrel Gesuche 7 22.11.2006 17:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:51 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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 41 42 43 44