Image#getScaledInstance & Graphics2D#drawImage ClassCast

Status
Nicht offen für weitere Antworten.

Bert Brenner

Bekanntes Mitglied
Folgender Code funktioniert wenn ich bei dem Aufruf von image.getScaledInstance Image.SCALE_FAST verwende, bei SCALE_SMOOTH kommt es zu einer ClassCastException bei dem Aufruf von g.drawImage

Code:
  public void drawImage(Graphics2D g, AffineTransform transform) {
    Image image = getImage();

    if (image==null) return;

    int width=getWidth();
    int height=getHeight();
    if (myResolution>0){
      final int oldWidth = width;
      final int oldHeight = height;
      width = (int)(oldWidth*transform.getScaleX()/72*myResolution);
      height = (int)(oldHeight*transform.getScaleY()/72*myResolution);
      if (width<oldWidth || height<oldHeight){
        transform.scale( (double) oldWidth / width, (double) oldHeight / height);
        image = image.getScaledInstance(width,height,Image.SCALE_SMOOTH);
      }
    }

    MediaTracker tracker = new MediaTracker(this);
    tracker.addImage(image, 0);
    while(!tracker.checkID(0,true)) {
      try {
        tracker.waitForID(0);
      } catch( InterruptedException ex ) {}
    }
    
    g.drawImage(image, transform, this);
  }

java.lang.ClassCastException: [I
at java.awt.image.ColorModel.getAlpha(ColorModel.java:814)
at java.awt.image.ColorModel.getRGB(ColorModel.java:859)
at sun.awt.image.ImageRepresentation.convertToRGB(ImageRepresentation.java:271)
at sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:485)
at java.awt.image.AreaAveragingScaleFilter.accumPixels(AreaAveragingScaleFilter.java:196)
at java.awt.image.AreaAveragingScaleFilter.setPixels(AreaAveragingScaleFilter.java:235)
at sun.awt.image.OffScreenImageSource.sendPixels(OffScreenImageSource.java:73)
at sun.awt.image.OffScreenImageSource.produce(OffScreenImageSource.java:161)
at sun.awt.image.OffScreenImageSource.addConsumer(OffScreenImageSource.java:37)
at sun.awt.image.OffScreenImageSource.startProduction(OffScreenImageSource.java:51)
at java.awt.image.FilteredImageSource.startProduction(FilteredImageSource.java:116)
at sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:644)
at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:820)
at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:813)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2863)
at pdrepgen.PduiImage.drawImage(PduiImage.java:254)
at pdrepgen.PduiRGImage.draw(PduiRGImage.java:315)
at pdrepgen.PduiRGTableRow.drawRow(PduiRGTableRow.java:1386)
at pdrepgen.PduiRGTableRow.draw(PduiRGTableRow.java:1481)
at pdrepgen.PduiRGTable.draw(PduiRGTable.java:1676)
at pdrepgen.PduiRGTable.draw(PduiRGTable.java:1546)
at pdrepgen.PduiRGArea.draw(PduiRGArea.java:3327)
at pdrepgen.PduiRGArea.draw(PduiRGArea.java:3183)
at pdrepgen.PduiRGPage.draw(PduiRGPage.java:665)
at pdrepgen.PduiRGDocument.draw(PduiRGDocument.java:1752)
at pdrepgen.PduiRGBuilder.paintComponent(PduiRGBuilder.java:1678)
at pdrepgen.PduiRGDrawingArea.paintComponent(PduiRGDrawingArea.java:114)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JViewport.paint(JViewport.java:722)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
at javax.swing.JComponent.paint(JComponent.java:798)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1312)
at javax.swing.JFrame.update(JFrame.java:392)
at sun.awt.RepaintArea.paint(RepaintArea.java:169)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Vielleicht weiss jemand von euch mehr darüber?
 

Oni

Top Contributor
zeile 27
was ist bzw auf was bezieht sich in dem fall "this" ? vielleicht liegt es daran, nur so eine vermutung
 

Bert Brenner

Bekanntes Mitglied
die this Referenz ist in beiden fällen gleich.

Ist eine Klasse die JComponent erweitert.

at java.awt.image.ColorModel.getAlpha(ColorModel.java:814)

in den Quelltexten von java wird dort auch auf ein byte[] gecastet, von daher würde ich die this Referenz als fehlerquelle ausschliessen.

Leider sind so viele Klassen aus dem sun... package beteiligt. Von diesen hab ich leider nicht die Quellen so das ich nachschauen könnte was die unter der haube so machen. (gibts die eigtl irgendwo frei verfügbar?)
 

Bert Brenner

Bekanntes Mitglied
Ich habe die Lösung gefunden:

Anscheinend kann ein BufferedImage was z.b. so
Code:
new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_INDEXED);
nicht so skaliert werden wie ich das tat.

Das erstellen meiner Images hab ich nun verändert, jetzt funktionierts. Erstaunlich finde ich das dieser Fehler erst beim drawImage auftauchte.

Jedenfalls danke an alle die sich nen Kopf gemacht haben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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 JPEG Image komprimieren Allgemeine Java-Themen 2
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
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
F Image als GIF oder JPEG abspeichern Allgemeine Java-Themen 2
J rotation von Graphics2D mit anschließender Translation Allgemeine Java-Themen 2
MQue Graphics2D Text Allgemeine Java-Themen 2
P Class Casting: Graphics/Graphics2D Allgemeine Java-Themen 7
N Graphics2D als Bild abspeichern Allgemeine Java-Themen 6
A Übergroße Graphics2D mit iText als PDF schreiben Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben