wstawianie obrazow do bazy

0

hej!
musze wstawic pare obrazow do bazy (baza Postgresa, pole typu bytea). nie wiem jednak jak wczytac obraz do Stringa (czy wystarczy podac sciezeke do katalogu w ktorym sie znajduje ?) oraz jak przerobic go na ciag/tablice binarna ktora pozniej wstawie do bazy?

String obraz = "/home/uzytkownik/projkety/Projekt01/src/Projekt01/jakis_obrazek.jpg";
//i teraz nie wiem jak go przerobic na postac binarna 

String zapytanie = "update t_obrazy set obraz='"+postac_binarna_obrazka+"'";

bede wdzieczna za wszelkie sugestie,
Pzdr!

0

zamienić na tablicę bajtów

BufferedImage img = ImageIO.read(inputFile);
ByteArrayOutputStream bas =
new ByteArrayOutputStream();
ImageIO.write(img, "pnm", bas);
byte[] data = bas.toByteArray();
0

a potrzebuje jakiejs dodatkowej biblio? (awt javax.imageio.*; ) mam, ale zwraca mi ze
BuferedImage cannot be resolved to a type

String obraz = "/home/ja/projekty/Projekt01/src/Projekt01/obrazek.jpg";
	File plik = new File(obraz);
BufferedImage img = ImageIO.read(plik);
ByteArrayOutputStream bas =new ByteArrayOutputStream();
			ImageIO.write(img, "pnm", bas);
			byte[] data = bas.toByteArray();
//i pozniej:
String zapytanie_obraz = "update t_obrazy set obraz='"+data+"' where id=5"; 

0

Trzeba dać importy;

import java.awt.image.BufferedImage;

Reszty poszukaj w dokumentacji ;)

0

hmm, to chyba nie do konca jest to o co mi chodzi. cos mi tam nawet wstawilo do bazy [B@dab859
ale juz pobrac sie nie da:

try {
 while(wynik_obrazy.next())	{
		
		ImageIcon icon = new ImageIcon(ImageIO.read(wynik_obrazy.getBinaryStream("obraz")));
		etykieta_obraz = new JLabel();
		
		etykieta_obraz.setIcon(icon);
		obraz.add(etykieta_obraz);
		}
	}
	catch(Exception wyjatek)	{
			System.out.println("Nie mozna wczytac obrazka.."+wyjatek);
			}

no i Exception: Nie mozna wczytac obrazka..java.lang.NullPointerException

0

Bo dobrze wstawił obiekt (zrobił byte[].toSring() ) trzeba jeszcze by dodać:

imageString = new String(data);

Odczyt takiego potworka to mniej więcej użycie czegoś takiego:

byte[] bytear = imageString.getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream (bytear,0,bytear.length);
JPEGImageDecoder dec = JPEGCodec.createJPEGDecoder(bis);
BufferedImage bim = dec.decodeAsBuffredImage();
0

wiesz co, zrobilam wg tego artykulu:
http://www.java2s.com/Code/Java/Database-SQL-JDBC/DemoPreparedStatementSetBinaryStream.htm

i dziala:) wstawia sie i wyswietlam:)
ale dzieki za pomoc, musze przyznac ze masz do mnie cierpliwosc:)

0

Hm... ciekawa strona. Cierpliwość mam, bo trenuję do prowadzenia wykładów właśnie z Javy.

Rozwiązanie jest rzeczywiście ciekawe i znacznie prostsze niż operowanie na strumieniach obrazów. Pytanie kontrolne jak wybierasz obrazy z bazy to zamieniasz je na obiekty Image za pomocą ???

0

robie w ten sposob:

						
ImageIcon icon = new ImageIcon(ImageIO.read(wynik_obrazy.getBinaryStream("obraz")));
		etykieta_obraz = new JLabel();
					
		etykieta_obraz.setIcon(icon);
		obraz.add(etykieta_obraz);
		

i dziala :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1