Hallo,
ich habe zu (fast) jedem Datensatz ein Bild im Format JPG in MS Access in einer Spalte als OLE-Objekt abgespeichert. Dies soll nach Angabe mehrerer Parameter angezeigt werden. Sage ich meinem Programm, es soll den absoluten Pfad auf der Festplatte nehmen, funktioniert das ohne Probleme. Daher denke ich, dass meine Anzeigefunktion gar nicht soooo verkehrt ist
Ich habe mir im Netz den Hinweis geholt, das Bild von der MS Access DB in einen byte-Array abzuspeichern und dann in ein ImageIcon bzw. ein BufferedImage umzuwandeln. Leider zeigt mir das Programm kein Bild an, eine Fehlermeldung bekomme ich jedoch auch nicht. Die Testausgaben "JA" und "FERTIG" werden auch ausgegeben. Hat jmd. einen Hinweis?
Hier mal das Coding:
Hier die Anzeigemethode der anderen Klasse
Vielen Dank schonmal!
ich habe zu (fast) jedem Datensatz ein Bild im Format JPG in MS Access in einer Spalte als OLE-Objekt abgespeichert. Dies soll nach Angabe mehrerer Parameter angezeigt werden. Sage ich meinem Programm, es soll den absoluten Pfad auf der Festplatte nehmen, funktioniert das ohne Probleme. Daher denke ich, dass meine Anzeigefunktion gar nicht soooo verkehrt ist
Ich habe mir im Netz den Hinweis geholt, das Bild von der MS Access DB in einen byte-Array abzuspeichern und dann in ein ImageIcon bzw. ein BufferedImage umzuwandeln. Leider zeigt mir das Programm kein Bild an, eine Fehlermeldung bekomme ich jedoch auch nicht. Die Testausgaben "JA" und "FERTIG" werden auch ausgegeben. Hat jmd. einen Hinweis?
Hier mal das Coding:
Java:
public BufferedImage getBild(String oid, String bid)
{
Connection con;
Statement st;
ResultSet rs;
String query;
ImageIcon ico = null;
BufferedImage image = null;
try
{
query = "SELECT O_Bild_" + bid + " FROM Fehlerort WHERE O_ID = '" + oid + "'";
con = DriverManager.getConnection(db);
st = con.createStatement();
rs = st.executeQuery(query);
if(rs.next())
{
System.out.print("JA");
byte[] imagedata = rs.getBytes(1);
ico = new ImageIcon(imagedata);
image = new BufferedImage(999, 761, BufferedImage.TYPE_INT_ARGB); // 999 Bildbreite, 761 Bildhöhe
System.out.print("FERTIG");
}
else
System.out.print("NEIN");
rs.close();
st.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return image;
}
Hier die Anzeigemethode der anderen Klasse
Java:
Datenbankschnittstelle db = new Datenbankschnittstelle();
Image img = db.getBild(oid, bid);
imageResized = img.getScaledInstance((int) bildBreite, (int) bildHoehe, Image.SCALE_SMOOTH); // Bild wird nicht angezeigt
bufferedImageOptimized = new BufferedImage((int) bildBreite, (int) bildHoehe, BufferedImage.TYPE_INT_ARGB);
bufferedImageOptimized.getGraphics().drawImage(imageResized, 0, 0, null);
g = (Graphics2D) bufferedImageOptimized.getGraphics();
Vielen Dank schonmal!