Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Creare un'immagine bitmap

    Salve a tutti,
    ho difficoltà nel creare un'immagine bitmap in java!
    Ho la griglia rettangolare dei valori di interi che danno il colore ad ogni pixel dell'immagine.
    Quando però vado a crearla,mi viene fuori un'immagine bitmap tutta nera.
    Non capisco il motivo:sto utilizzando le classi BufferedImage,DataBufferInt,SampleModel e Raster.

    Grazie x l'aiuto!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dovresti postare un po' di codice così da vedere in che modo usi tali classi per cercare di capire dove possa esserci l'errore.

    E magari anche un'esempio della matrice di interi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Dai uno sguardo qui

    Al mio segnale... scatenate l'inferno!

  4. #4
    /*ho usato il costruttore "BufferedImage(int width, int height, int imageType)" per creare una immagine bitmap di dimensione 47x49 pixel

    BufferedImage bimage = new BufferedImage(47,49,BufferedImage.TYPE_3BYTE_BGR);
    /*dataArray è un array bidimensionale di interi;
    int [][] dataArray = new int[47][49];
    int size = 47*49;
    int k=0;
    for (int i=0;i<47;i++)
    {
    for (int j=0;j<49;j++)
    {
    dataArray[i][j] = k % 256;
    System.out.println("dataArray["+i+"]["+j+"]= "+dataArray[i][j]);
    k=k+1;
    }
    }
    DataBufferInt dbi = new DataBufferInt(dataArray,size);
    SampleModel sm = new BandedSampleModel(dbi.getDataType(),47,49,3);
    Point point = new Point();

    Raster raster = Raster.createRaster(sm,dbi,point);
    String formatFile = "bmp";
    File fileoutput = new File("C:/Documents and Settings/Darioboss81/Desktop/fileOutput");
    try {
    ImageIO.write(bimage,formatFile,fileoutput);
    } catch (IOException ex) {
    ex.printStackTrace();
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Nel codice postato non setti il raster nella tua BufferedImage. Puoi procedere in vari modi: BufferedImage ha dei metodi per settare il Raster(setData() mi pare), per accedere al WritableRaster di default(getRaster(), potresti fare le modifiche direttamente su quello), oppure prende un Raster direttamente da costruttore. In alternativa ha anche il metodo setRGB(int x, int y, int rgb), che colora direttamente con il valore rgb il pixel in posizione x,y.
    Per vedere in dettaglio , QUESTO è il link alla documentazione ufficiale.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.