2013-01-16 23 views
17

Bir görüntüyü görüntülemek istiyorum ama ne yapacağımı bilmiyorum. Bazı kütüphane dosyalarını yüklemem gerekip gerekmediğini ya da bilmiyorum. Aslında görüntü işleme yapmak istiyorum, ancak önce görüntü girişini ve görüntüyü almalıyım, sonra görüntü işlemenin çıktı olarak etkisini elde edebilirim ve (algoritmanın) doğru olup olmadığını belirleyebilirim. Tutulmayı sadece kurdum. Google'da da arama yaptım, ancak önerdikleri her şey iyi çalışmıyor. Ya bir şey yüklemem ya da yapmam gerek.Java'da Resim Görüntüleme

import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Image; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class ImageTest { 
    public static void main(String[] args){ 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run(){ 
       ImageFrame frame = new ImageFrame(); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setVisible(true); 


      } 
     } 
     ); 
    } 
} 

class ImageFrame extends JFrame{ 

    public ImageFrame(){ 
     setTitle("ImageTest"); 
     setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); 

     ImageComponent component = new ImageComponent(); 
     add(component); 

    } 

    public static final int DEFAULT_WIDTH = 300; 
    public static final int DEFAULT_HEIGHT = 200; 
} 


class ImageComponent extends JComponent{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private Image image; 
    public ImageComponent(){ 
     try{ 
      File image2 = new File("bishnu.jpg"); 
      image = ImageIO.read(image2); 

     } 
     catch (IOException e){ 
      e.printStackTrace(); 
     } 
    } 
    public void paintComponent (Graphics g){ 
     if(image == null) return; 
     int imageWidth = image.getWidth(this); 
     int imageHeight = image.getHeight(this); 

     g.drawImage(image, 50, 50, this); 

     for (int i = 0; i*imageWidth <= getWidth(); i++) 
      for(int j = 0; j*imageHeight <= getHeight();j++) 
       if(i+j>0) g.copyArea(0, 0, imageWidth, imageHeight, i*imageWidth, j*imageHeight); 
    } 

} 

Bu sadece bir grafik penceresi gösterir ancak resim "bishnu.jpg"

Tutulma şey yüklemeli miyim gösteremez: Aşağıdaki kodu denediniz mi? Ama bence bir şeylerin yüklenmesi gerekmiyor.

+2

... yani kodda ... – Lionel

cevap

7

Kodunuzu çalıştırmak, yolu ayarladıktan sonra benim için bir görüntü gösterir. Resim yolunuzun doğru olduğunu doğrulayabilir misiniz, örneğin mutlak yolu deneyin?

+0

çok ben de verdi teşekkürler lütfen görüntünün tam yolu o zaman çalışır. Ama görüntü kod ile aynı klasörde, bu yüzden işe yaramaz (sadece kod ile aynı klasör içindeki görüntü adıyla)? –

+0

Sınıf yolunu kullanarak kaynak yükleme hakkında ipuçları için bu konudaki kabul edilen cevaba bakın: http://stackoverflow.com/questions/7014123/reading-an-image-in-netbeans/7014177#7014177. – OlavJ

9
import java.awt.FlowLayout; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

public class DisplayImage { 

    public static void main(String avg[]) throws IOException 
    { 
     DisplayImage abc=new DisplayImage(); 
    } 

    public DisplayImage() throws IOException 
    { 
     BufferedImage img=ImageIO.read(new File("f://images.jpg")); 
     ImageIcon icon=new ImageIcon(img); 
     JFrame frame=new JFrame(); 
     frame.setLayout(new FlowLayout()); 
     frame.setSize(200,300); 
     JLabel lbl=new JLabel(); 
     lbl.setIcon(icon); 
     frame.add(lbl); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 
3

Görüntüleri yüklemek/işlemek/görüntülemek istiyorsanız, bir görüntü işleme çerçevesi kullanmanızı öneririz. Örneğin, Marvin'u kullanarak, yalnızca birkaç satırlık kaynak koduyla bunu kolayca yapabilirsiniz.

Kaynak kodu:

public class Example extends JFrame{ 

    MarvinImagePlugin prewitt   = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.edge.prewitt"); 
    MarvinImagePlugin errorDiffusion = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.halftone.errorDiffusion"); 
    MarvinImagePlugin emboss   = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.color.emboss"); 

    public Example(){ 
     super("Example"); 

     // Layout 
     setLayout(new GridLayout(2,2)); 

     // Load images 
     MarvinImage img1 = MarvinImageIO.loadImage("./res/car.jpg"); 
     MarvinImage img2 = new MarvinImage(img1.getWidth(), img1.getHeight()); 
     MarvinImage img3 = new MarvinImage(img1.getWidth(), img1.getHeight()); 
     MarvinImage img4 = new MarvinImage(img1.getWidth(), img1.getHeight()); 

     // Image Processing plug-ins 
     errorDiffusion.process(img1, img2); 
     prewitt.process(img1, img3); 
     emboss.process(img1, img4); 

     // Set panels 
     addPanel(img1); 
     addPanel(img2); 
     addPanel(img3); 
     addPanel(img4); 

     setSize(560,380); 
     setVisible(true); 
    } 

    public void addPanel(MarvinImage image){ 
     MarvinImagePanel imagePanel = new MarvinImagePanel(); 
     imagePanel.setImage(image); 
     add(imagePanel); 
    } 

    public static void main(String[] args) { 
     new Example().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

Çıktı: Eğer denedi neler

enter image description here

+0

marvin1.5.1.jar dosyasını sourceforge'dan indirdikten sonra, örneğiniz java.io.FileNotFoundException ile başarısız olur:. \ Marvin \ plugins \ image \ org.marvinproject.image.edge.prewitt.jar (Sistem belirtilen yolu bulamıyor) –

+0

@AlexR: Sanırım Marvin'i düzgün bir şekilde yüklemedin. "Marvin" klasörünü projenizin kök klasörüne kopyalamanız gerekir. Aşağıdaki eğiticiye bir göz atın, sorun devam ederse, tartışma grubundaki geliştiricilere ulaşabilirsiniz. http://marvinproject.sourceforge.net/en/tutorials/02_firstApplication/firstApplication.html –

İlgili konular