Avatar billede ibrene Nybegynder
31. august 2003 - 13:41 Der er 11 kommentarer og
1 løsning

save image to server harddisk

Hejsa

Jeg har lavet en lille applet hvor folk kan lave noget billed redigering. Når de er færdige med deres resultat, så har jeg det hele liggende i en variable:

private Image img;

Nu vil jeg gerne have indholdet af img gemt på min server som et grafik billed. Men syntes ikke lige at jeg kan finde nogle videre nem løsning.

Er der nogle som sidder med en løsning, nem eller besværlig. Så vil jeg da gerne høre om det.
Avatar billede psychodad Nybegynder
31. august 2003 - 16:12 #1
Jeg har brugt GIFEncoder til at lave Image om til GIF.

API finder du her:
http://www.gurge.com/amd/old/java/GIFEncoder/

koden til at gemme i GIF ser ud som følgende:

import java.awt.image.*;
import java.io.*;
...
...
GIFEncoder encode = new GIFEncoder(img);
OutputStream output = new BufferedOutputStream(
  new FileOutputStream("mitbillede.gif"));
encode.Write(output);
Avatar billede psychodad Nybegynder
31. august 2003 - 16:16 #2
GIFEncoder.java som du henter på ovenstående URL, compiles og .class-filen ligges i samme mappe som din applet.

Du skal også være sikker på at din applet har skriverettigheder på webserveren.
Avatar billede ibrene Nybegynder
31. august 2003 - 17:42 #3
Hejsa


Tja... måske virker det... der komemr dog følgende fejl:

"ImageApplet.java": Error #: 360 : unreported exception: java.awt.AWTException; must be caught or declared to be thrown at line 54, column 31

"ImageApplet.java": Error #: 360 : unreported exception: java.io.FileNotFoundException; must be caught or declared to be thrown at line 55, column 58

"ImageApplet.java": Error #: 360 : unreported exception: java.io.IOException; must be caught or declared to be thrown at line 56, column 14

Har lagt GIFEncoder.java i samme bibliotek som resten af min kode, men der komemr desvære fejl.

Kan du hjælpe?
Avatar billede arne_v Ekspert
31. august 2003 - 18:30 #4
Hvis du bruger Java på server side så:
  - serialiser Image
  - POST det til en servlet som gemmer
  - lad servlet gemme

Hvis du ikke bruger Java på server side:
  - konverter image til gængs format
  - POST det til ASP/PHP/whatever
  - las ASP/PHP/whatever gemme
Avatar billede ibrene Nybegynder
31. august 2003 - 18:53 #5
Hej arne_v

Kan jeg tage indholder at img og post'e direkte uden mime types ect?
Har du eet ex på dette?
Avatar billede arne_v Ekspert
31. august 2003 - 19:18 #6
Hvis du skriver koden i begge ender, så er der ikke de store krav
til MIME type.

Den skal naturligvis have en, men det betyde ikke noget.
Avatar billede psychodad Nybegynder
31. august 2003 - 19:38 #7
ok, du skal bruge try-catch så...jeg bruger allerede try catch, men troede egentlig ikke det vaqr nødvendigt her.

try {
  GIFEncoder encode = new GIFEncoder(img);
  OutputStream output = new BufferedOutputStream(
      new FileOutputStream("mitbillede.gif"));
  encode.Write(output);
}
catch(Exception e){}

Jeg har så selv bare brugt det til at oprette/gemme nogle pics på min egen pc inde fra editor. Hvis du lader en applet gemme pic (hvilket jeg ikke engang er sikker på man kan give en applet rettigheder til) vil det jo også blive gemt lokalt på client og ikke på serveren.
Så du er nødtil som der også skrives ovenfor at videresende det til en servlet eller php script.
Avatar billede ibrene Nybegynder
31. august 2003 - 20:16 #8
Hejsa

Det er jo ikke for at være besværlig, men nu kom følgende fejl:

Uncaught error fetching image:

java.lang.ArrayIndexOutOfBoundsException
    at java.awt.image.PixelGrabber.setPixels(PixelGrabber.java:568)
    at java.awt.image.CropImageFilter.setPixels(CropImageFilter.java:160)
    at sun.awt.image.PixelStore32.replayLines(PixelStore32.java:37)
    at sun.awt.image.PixelStore.replay(PixelStore.java:220)
    at sun.awt.image.PixelStore.replay(PixelStore.java:149)
    at sun.awt.image.InputStreamImageSource.updateFromStore(InputStreamImageSource.java:291)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:244)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:217)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:185)

Jeg laver først denne kommando:
    smallimg = imageGet(img, slippunkt.x-10 ,slippunkt.y-20, 95, 65);

også   

try {
      GIFEncoder encode = new GIFEncoder(smallimg);
      OutputStream output = new BufferedOutputStream(
          new FileOutputStream("mitbillede.gif"));
      encode.Write(output);
    }
    catch(Exception e){}

Nogle gode ideer?
Avatar billede arne_v Ekspert
10. september 2003 - 21:54 #9
Tid at lukke spørgsmålet ?
Avatar billede ibrene Nybegynder
03. januar 2010 - 14:11 #10
Hvor er lukke knappen....
Avatar billede arne_v Ekspert
03. januar 2010 - 14:56 #11
Hvis der er nogle af de lagte kommentarer der var hjælpsomme, så beder du dem lægge et svar som du så kan acceptere.

Ellers lægger du selv et svar og accepterer dette.
Avatar billede ibrene Nybegynder
03. januar 2010 - 15:08 #12
Så lukker vi, hvis jeg kan
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