Avatar billede ojshowtime Nybegynder
29. marts 2004 - 17:25 Der er 7 kommentarer

Konstruktion af Image fra byte[]

Et Servlet modtager et byte[] som indeholder data fra et billede. Der skal konstrueres et billede baseret på dette byte[]. Dette billede skal gemmes i en mappe på harddisken.

Spørgsmål:
Hvordan kan man konstruere et Image-objekt udfra et byte[]?
Hvordan kan man gemme dette Image-objekt på harddisken i JPG format?

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
29. marts 2004 - 17:28 #1
Hvorfor vil du have lavet et Image objekt ?

Kan du ikke bare gemme de rå bytes i filen ?
Avatar billede _carsten Nybegynder
29. marts 2004 - 20:44 #2
Hvis du ikke vil gemme direkte, skulle dette være løsningen (ikke testet).

import java.awt.*;
import java.io.*;
import javax.imageio.*;
import java.awt.image.*;

        byte[] imagedata; // Fra Servlet
        Image image = Toolkit.getDefaultToolkit().createImage(imagedata);
        BufferedImage buf = BufferedImage(image);

        try
        {
            ImageIO.write( buf, "jpg", new File("test.jpg"));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
Avatar billede ojshowtime Nybegynder
31. marts 2004 - 14:56 #3
Hej carsten

Følgende kan ikke lade sig gøre:
BufferedImage buf = BufferedImage(image);

Konstruktøren til et BufferedImage skal modtage følgende:
BufferedImage(ColorModel cm, WriteableRaster wr, boolean isRasterPremultiplied, HashTable properties). Der er to simplere konstruktører men dem fatter man endnu mindre af.

Nu er det sådan at jeg ikke har arbejdet så meget med billeder i java og derfor fatter jeg ikke hvordan jeg skal komme videre.

Har du nogen ideer til hvordan jeg kommer videre?
Avatar billede ojshowtime Nybegynder
31. marts 2004 - 14:58 #4
Til arne v

Kan du komme med et eksempel?
Avatar billede arne_v Ekspert
31. marts 2004 - 15:12 #5
Jeg vil bare skrive det til en fil.

byte[] img;
...
OutputSTream os = new FileOutputStream("filnavn.typ");
os.write(img);
os.close();
Avatar billede _carsten Nybegynder
31. marts 2004 - 15:22 #6
Ja - selvfølgelig, parenteserne havde jeg sat forkert

Sådan skulle det have været, men har lige testet og det giver en classCastException
BufferedImage buf = (BufferedImage)image;

Så alt afhængig af om du har brug for det Image, så lav en kombination af Arne's
og mit forslag.
Avatar billede arne_v Ekspert
24. april 2004 - 18:21 #7
Tid at få afsluttet spørgsmålet (og givet point til dem som måtte have fortjent det) ?
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