Avatar billede runeklausen2 Nybegynder
09. maj 2005 - 23:33 Der er 4 kommentarer og
1 løsning

Lave jpg billede

Hvis jeg har en vektor med en række koordinater er det så muligt at få java til at generere en jpg fil som viser en streg mellem disse koordinater?

Tanken er at lave vektoren skal indeholder nogle tal værdier over en givet tidsperiode, og der skal lave et billede som out-put, som afspejler disse værdier over en tidsakse.
Avatar billede runeklausen2 Nybegynder
09. maj 2005 - 23:34 #1
Dette sakl gøres uden at tenge det i en frame eller noget, bare kald til en funktion, og vupti et billede kommer ud.

Hvis jeg bare får nogle ledetråde kan jeg muligvis godt selv rette det til som jeg ønsker det.
Avatar billede mikkelbm Nybegynder
09. maj 2005 - 23:51 #2
Du skal nok ha' gang i noget BufferedImage. Laver lige et hurtigt eksempel.
Avatar billede mikkelbm Nybegynder
10. maj 2005 - 00:02 #3
Her er så et køreklart eksempel:

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
import javax.imageio.stream.ImageOutputStream;
import java.io.*;
import java.util.Iterator;

public class Graf extends JFrame
{
    public Graf ()
    {
        setSize (200, 200);
        Point[] p = new Point[20];
        for (int i = 0; i < p.length; i++)
        {
            int x = (int)(Math.random() * 200);
            int y = (int)(Math.random() * 200);
            p[i] = new Point(x, y);
        }
           
        final BufferedImage ima = createImage(p);
       
        JButton save = new JButton ("Gem");
        save.addActionListener(new ActionListener()
        {
            public void actionPerformed (ActionEvent e)
            {
                try
                {
                    saveImage (ima, new File ("C:\\graf.jpg"));
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            }
        });
       
        JButton show = new JButton ("Vis");
        show.addActionListener(new ActionListener()
        {
            public void actionPerformed (ActionEvent e)
            {
                showImage (ima);
            }
        });
       
        this.getContentPane().setLayout(new FlowLayout());
        this.getContentPane().add(save);
        this.getContentPane().add(show);
    }
   
    public void showImage (BufferedImage img)
    {
        JDialog dia = new JDialog ();
        dia.setSize(img.getWidth(), img.getHeight());
        dia.getContentPane().add(new JLabel(new ImageIcon (img)));
        dia.setVisible(true);
    }
   
    public void saveImage (BufferedImage img, File file) throws IOException
    {
        Iterator writers = ImageIO.getImageWritersByFormatName("jpg");
        ImageWriter writer = (ImageWriter)writers.next();
       
        ImageOutputStream ios = ImageIO.createImageOutputStream(file);
        writer.setOutput(ios);

        writer.write(img);
    }
   
    public BufferedImage createImage (Point[] points)
    {
        BufferedImage im = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = (Graphics2D)im.getGraphics();
       
        for (int i = 0; i<points.length; i++)
        {
            if (i < points.length - 1)
            {
                g2.drawLine(points[i].x, points[i].y, points[i+1].x, points[i + 1].y);
            }
        }
       
        return im;
    }
   
    public static void main (String[] args)
    {
        new Graf().setVisible(true);
    }
}
Avatar billede mikkelbm Nybegynder
10. maj 2005 - 00:03 #4
Metoderne: saveImage og createImage kan genbruges. Resten er bare for at vise dem i funktion.
Avatar billede runeklausen2 Nybegynder
10. maj 2005 - 10:59 #5
Yes sir. Det er et super eksempel, jeg kan godt selv lave så den tegner grafer nu :)
1000-tak
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