Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Creare GIF Blank

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    3

    Creare GIF Blank

    Saluti

    ho creato una classe MyImg che servirà (è ancora incompleta) per recuperare immagini da un database (immagini saranno in campi Blob).

    Questa classe dovrebbe avere una immagine blank di default senza andarla a pescare da un file o memorizzare nel dbase una blank image.
    Al momento ho messo proprio una gif blank nel database e pesco quella ma mi piacerebbe, visto che è una gif da 1 pixel blank farlo da codice senza andare a fare una chiamata al dbase.

    Il problema quindi è creare, a programma, una gif blank
    che poi convertirò in un byte array (visto che una servlet poi invierà alla pagina jsp le immagini).

    Per ora sono a questo punto

    codice:
    import java.awt.image.BufferedImage;
    import java.awt.image.DataBufferByte;
    import java.awt.image.WritableRaster;
    import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class MyImg {
    
      public static byte[] IMG_BLANK = null;
    	
      private String label;
      private byte[] img;
    
      static {
    	  BufferedImage image = 
                         new BufferedImage(1, 1,  BufferedImage.TYPE_BYTE_INDEXED);
    	    WritableRaster raster   = image.getRaster();
    	    DataBufferByte buffer = (DataBufferByte)raster.getDataBuffer();
    	    IMG_BLANK = buffer.getData();
      } //
      
      public MyImg() {
    	this.img = IMG_BLANK;	
      }
    
    
      public void toFile(String path) {
    	  try {
    		  
    			FileOutputStream out = new FileOutputStream(path);
    			out.write(this.img);
    			out.close();
    		
    	} catch (Exception e) {
    			System.out.println(e);
    	}
    } //
    
     public String getLabel() {
        return this.label;
      }
      public void setLabel(String label) {
        this.label = label;
      }
      public byte[] getImg() {
        return this.img;
      }
      public void setImg(byte[] img) {
        this.img = img;
      }
    
    
      }
    quindi testando con:

    codice:
    MyImg imgBlank = new MyImg();
    imgBlank.toFile("D:/temp/bianca.gif");
    System.out.println("OK DUDE..!!!");
    ottengo una immagine gif non valida....


    Qualche idea ?
    grazie..

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Creare GIF Blank

    Originariamente inviato da rsorrt
    Il mio problema è proprio il creare, da programma, una gif blank.
    Una immagine blank (e qui non centra il formato di file!) la crei appunto con un BufferedImage.

    Se vuoi scriverla su uno "stream" (in generale ... che sia stream di file o di blob o di socket non importa) in uno dei formati di file "noti" (es. gif, png, ecc...) dovresti usare la classe javax.imageio.ImageIO (almeno per questi formati più comuni).

    Non devi usare nulla dei "raster" interni al BufferedImage.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    3

    Re: Re: Creare GIF Blank

    Originariamente inviato da andbin
    Una immagine blank (e qui non centra il formato di file!) la crei appunto con un BufferedImage.

    Se vuoi scriverla su uno "stream" (in generale ... che sia stream di file o di blob o di socket non importa) in uno dei formati di file "noti" (es. gif, png, ecc...) dovresti usare la classe javax.imageio.ImageIO (almeno per questi formati più comuni).

    Non devi usare nulla dei "raster" interni al BufferedImage.
    ciao ti ringrazio....

    l'idea era quella di usare poi un Servlet per recuperare le immagini:

    codice:
    MyImg img = null;
    
    String id = request.getParameter("idImg");
    
    // recupero da Dbase se id è valido
    if (id != null && id.length() != 0) {
    
    	img = (MyImg) session.get(MyImg.class, id); // uso hibernate
    } //
    if (img == null) {
    		img = new MyImg(); //che avrebbe di default blank gif
    } //
    
    // a questo punto 
    // o l'immagine è quella presa da un id valido oppure è la blank
    
    byte[] bytes = img.getImg();
    InputStream in = new ByteArrayInputStream(bytes);
    OutputStream out = response.getOutputStream();
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) != -1) {
    	out.write(buf, 0, len);
    }
    in.close();
    out.close();
    okay provo ad usare javax.imageio.ImageIO
    vediamo come.... ora ci provo...

    thanks...

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    3
    Okay funge come hai suggerito tu....
    usando ImageIO

    quindi
    codice:
     BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_BINARY);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ImageIO.write(image, "gif", baos);
     byte[] IMG_BLANK = baos.toByteArray();	
    bye e grazie 1000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.