wstawianie obrazow do bazy

Odpowiedz Nowy wątek
2007-12-15 21:29

Rejestracja: 12 lat temu

Ostatnio: 7 lat temu

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!

Pozostało 580 znaków

2007-12-15 22:09

Rejestracja: 12 lat temu

Ostatnio: 2 dni temu

0

zamienić na tablicę bajtów

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

Pozostało 580 znaków

2007-12-15 23:35

Rejestracja: 12 lat temu

Ostatnio: 7 lat temu

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"; 

Pozostało 580 znaków

2007-12-16 00:17

Rejestracja: 12 lat temu

Ostatnio: 2 dni temu

0

Trzeba dać importy;

import java.awt.image.BufferedImage;

Reszty poszukaj w dokumentacji ;)

Pozostało 580 znaków

2007-12-16 00:29

Rejestracja: 12 lat temu

Ostatnio: 7 lat temu

0

hmm, to chyba nie do konca jest to o co mi chodzi. cos mi tam nawet wstawilo do bazy b>[[email protected]</b
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

Pozostało 580 znaków

2007-12-16 00:36

Rejestracja: 12 lat temu

Ostatnio: 2 dni temu

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();

Pozostało 580 znaków

2007-12-16 00:52

Rejestracja: 12 lat temu

Ostatnio: 7 lat temu

0

wiesz co, zrobilam wg tego artykulu:
http://www.java2s.com/Code/Ja[...]dStatementSetBinaryStream.htm

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

Pozostało 580 znaków

2007-12-16 19:51

Rejestracja: 12 lat temu

Ostatnio: 2 dni temu

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ą ???

Pozostało 580 znaków

2007-12-16 20:33

Rejestracja: 12 lat temu

Ostatnio: 7 lat temu

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 :)

Pozostało 580 znaków

Odpowiedz

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