Avatar billede henrik_40 Juniormester
25. maj 2004 - 20:07 Der er 11 kommentarer og
1 løsning

Grafik i JSP

Hej
Hvordan får jeg fat i et billede (.jpg) i jsp-kode.

(Vist noget med response.setContentType("image/kurervogn.jpg"))

Historien er at jeg har stinavnet liggende i min mysql-database, og vil på dennne måde hente billeder frem..

/Henrik
Avatar billede arne_v Ekspert
25. maj 2004 - 20:09 #1
Lad din JSP side generere et IMG tag med SRC til en servlet.
Avatar billede arne_v Ekspert
25. maj 2004 - 20:11 #2
Jeg lavede engang dette eksempel som selv genererer image.

blue.jsp

<img src="Blue"/>

Blue.java

package test;

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import com.sun.image.codec.jpeg.*;

public class Blue extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/jpeg");
      BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
      Graphics g = bi.getGraphics();
      g.setColor(Color.WHITE);
      g.fillRect(0, 0, 100, 100);
      g.setColor(Color.BLUE);
      g.fillOval(20, 20, 60, 60);
      try {
        JPEGImageEncoder ecd = JPEGCodec.createJPEGEncoder(response.getOutputStream());
        ecd.encode(bi);
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (ImageFormatException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
}
Avatar billede arne_v Ekspert
25. maj 2004 - 20:12 #3
Du skal bare hente image fra databasen i stedetfor at generere det.
Avatar billede henrik_40 Juniormester
25. maj 2004 - 20:23 #4
Hvordan skal jeg hente image fra databasen? Man kan da vist ikke lægge grafik i mysql. Jeg har blot lavet en string, som angiver filnavnet.
Har du en idé?
Avatar billede arne_v Ekspert
25. maj 2004 - 20:25 #5
Du kan også bare læse en image fil fra disk og returnere indholdet.

Men du kan sagtens gemme grafik i MySQL.
Avatar billede arne_v Ekspert
25. maj 2004 - 20:25 #6
Det har jeg også et lille eksempel på:

import java.io.*;
import java.sql.*;

public class BlobTest {
  public static void main(String[] args) throws Exception {
      byte[] b = new byte[(int)(new File("C:\\elogo.png")).length()];
      InputStream is = new FileInputStream("C:\\elogo.png");
      is.read(b);
      is.close();
      Class.forName("com.mysql.jdbc.Driver");
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "", "");
      PreparedStatement ins = con.prepareStatement("INSERT INTO BlobTest VALUES (?,?)");
      ins.setInt(1, 123);
      ins.setBytes(2, b);
      ins.executeUpdate();
      PreparedStatement sel = con.prepareStatement("SELECT Picture FROM BlobTest WHERE ID=?");
      sel.setInt(1, 123);
      ResultSet rs = sel.executeQuery();
      rs.next();
      byte[] b2 = rs.getBytes(1);
      con.close();
      OutputStream os = new FileOutputStream("C:\\elogo2.png");
      os.write(b2);
      os.close();
  }
}
Avatar billede henrik_40 Juniormester
25. maj 2004 - 20:46 #7
hmm. Ser meget rigtigt ud. Men nu skal jeg lige se hvordan jeg lægger grafik på mysql-databasen. Det var nyt for mig.
Så vil jeg vende tilbage...
Avatar billede henrik_40 Juniormester
27. maj 2004 - 23:43 #8
Mange tak Arne_v

Jeg oprettede en type i sql-tabellen, som hedder BLOB og derefter virkede dit eksempel perfekt :-)

Nu vil jeg gerne give dig point. Så du bliver nødt til at give mig et svar.

/Henrik
Avatar billede arne_v Ekspert
27. maj 2004 - 23:44 #9
svar
Avatar billede henrik_40 Juniormester
27. maj 2004 - 23:49 #10
jeps du får pointene, men måske kan du - som et tillægsspørgsmål give mig svaret på (hvis du har lyst - du har jo allerede svaret mig på mit oprindelige spørgsmål)

ins.setInt(1,123)
ins.setBytes(2,b)
ins.executeUpdate();
sel.setInt(1,123)

En eller flere af dem?
Avatar billede arne_v Ekspert
27. maj 2004 - 23:51 #11
Hvad er spørgsmålet ?

De 2 første set sætter parameterne til INSERT.

Den sidste set sætter parameteren til SELECT.
Avatar billede henrik_40 Juniormester
27. maj 2004 - 23:55 #12
Det var spørgsmålet.

tak. Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester