Avatar billede brunkagen Nybegynder
24. oktober 2002 - 16:11 Der er 6 kommentarer og
1 løsning

Images

Jeg sidder og roder med noget grafikhåndtering. Grafikken ligger som Images, men skal dog vises i en applet. Dette fungerer også, men jeg har det problem at jeg ikke kan skrive til en fil fra en applet. Mit spørgsmål er så nu, om man kan benytte Images udenfor applets - det ville nemlig være fint nok, hvis jeg blot kunne loade mine .gif filer og så save dem, når der var manipuleret med dem...
Avatar billede fredand Forsker
24. oktober 2002 - 16:17 #1
Hello!
As long if the Applet is not a "signed" Applet you can only read and write files to and from the server the Applet was downloaded from.

You can read about "signed" Applet at http://www.tml.hut.fi/Studies/Tik-110.300/1999/Essays/applet.html or find a link to it.

Best regards
Fredrik
Avatar billede brunkagen Nybegynder
24. oktober 2002 - 16:31 #2
Spørgsmålet går ikke så meget på applets, men mere hvorvidt man kan benytte images i en ganske almindelig klasse. Jeg behøver nemlig ikke at se mine images...
Avatar billede fredand Forsker
25. oktober 2002 - 09:04 #3
Hmm!
Ok sorry my danish aint so good.
I guess tahta you wish to load an image in a application and perhaps manipulate it on the fly and after taht store it?.

To load it you can always use:

MediaTracker mediaTracker = new MediaTracker(this);
Image image = getToolkit().getImage("face/images/clint.jpg");

try
{
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
}
catch(InterruptedException ie)
{
}

Then get the Graphics object from it and mamipulate it and after that save it.

Best regards
Fredrik
Avatar billede di8leva Nybegynder
25. oktober 2002 - 14:01 #4
Om inte fredands svar ær godkænt får du gærna formulera om frågan, før just nu førstår jag inte ens frågan.
Vad ær det du vill? =)
Avatar billede brunkagen Nybegynder
28. oktober 2002 - 15:12 #5
Ja, det er noget i den retning jeg er ude efter... Problemmet er, at jeg ikke skal have en applet, men blot en applikation til at loade en gif fil, scallere den, og gemme pixeldata for billedet.

fredand:
Ja, men hvad med getToolkit()?! Den metode skal vel kaldes på et eller andet?

Og hvad med MediaTracker(this), når nu jeg ikke står med et awt komponent? Kan jeg evt. få et image frem på anden vis?

Og hvordan get'er man et graphics object fra MediaTrackeren?
Avatar billede fredand Forsker
28. oktober 2002 - 15:57 #6
Hello!

getToolKit is able in java.awt.Component with this you can load the image.

I guess you can skip the MediaTracker.

Graphics g = image.getGraphics();

Now you can scale or modifie your image, take a look in the api for Graphics.

I'm not sure how to save it.

Best regards
Fredrik

Ps I found this:
import java.awt.*;
import java.awt.event.*;

/*
* Minimum Java image viewer
* (1) save as Viewer.java
* (2) open prompt / shell, go to directory with Viewer.java in it
*    and compile: javac Viewer.java
* (3) run with image file name as parameter: java Viewer c:\test.jpg
*/
public class Viewer extends Frame {
    private Image image;

    public Viewer(String fileName) {
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        image = toolkit.getImage(fileName);
        MediaTracker mediaTracker = new MediaTracker(this);
        mediaTracker.addImage(image, 0);
        try
        {
            mediaTracker.waitForID(0);
        }
        catch (InterruptedException ie)
        {
            System.err.println(ie);
            System.exit(1);
        }
        addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                System.exit(0);
              }
        });
        setSize(image.getWidth(null), image.getHeight(null));
        setTitle(fileName);
        show();
    }

    public void paint(Graphics graphics) {
        graphics.drawImage(image, 0, 0, null);
    }

    public static void main(String[] args) {
        new Viewer(args[0]);
    }
}

----------------

/*
* Thumbnail.java (requires Java 1.2+)
*/

import com.sun.image.codec.jpeg.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;

public class Thumbnail {
    public static void main(String[] args) throws Exception {
        if (args.length != 5) {
            System.err.println("Usage: java Thumbnail INFILE " +
                "OUTFILE WIDTH HEIGHT QUALITY");
            System.exit(1);
        }
        // load image from INFILE
        Image image = Toolkit.getDefaultToolkit().getImage(args[0]);
        MediaTracker mediaTracker = new MediaTracker(new Frame());
        mediaTracker.addImage(image, 0);
        mediaTracker.waitForID(0);
        // determine thumbnail size from WIDTH and HEIGHT
        int thumbWidth = Integer.parseInt(args[2]);
        int thumbHeight = Integer.parseInt(args[3]);
        double thumbRatio = (double)thumbWidth / (double)thumbHeight;
        int imageWidth = image.getWidth(null);
        int imageHeight = image.getHeight(null);
        double imageRatio = (double)imageWidth / (double)imageHeight;
        if (thumbRatio < imageRatio) {
            thumbHeight = (int)(thumbWidth / imageRatio);
        } else {
            thumbWidth = (int)(thumbHeight * imageRatio);
        }
        // draw original image to thumbnail image object and
        // scale it to the new size on-the-fly (drawImage is quite powerful)
        BufferedImage thumbImage = new BufferedImage(thumbWidth,
            thumbHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics2D = thumbImage.createGraphics();
        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
            RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
        // save thumbnail image to OUTFILE
        BufferedOutputStream out = new BufferedOutputStream(new
            FileOutputStream(args[1]));
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        JPEGEncodeParam param = encoder.
            getDefaultJPEGEncodeParam(thumbImage);
        int quality = Integer.parseInt(args[4]);
        quality = Math.max(0, Math.min(quality, 100));
        param.setQuality((float)quality / 100.0f, false);
        encoder.setJPEGEncodeParam(param);
        encoder.encode(thumbImage);
        System.out.println("Done.");
        System.exit(0);
    }
}
Avatar billede brunkagen Nybegynder
30. oktober 2002 - 10:40 #7
Så fik jeg det til at virke! Jeg takker mange gange!
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