2013-06-21 1 views
0
import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import java.io.*; 
import java.util.Scanner; 
import java.util.StringTokenizer; 
import javax.imageio.*; 
import javax.swing.*; 

public class CreateImage extends Component{ 

    BufferedImage img; 

    int pixel = 265*190; 
    int steg = 3; 
    int p,s; 
    int [][] rgb_steg = new int [pixel][steg]; 



    public CreateImage()throws Exception{ 


     try{ 
      img = ImageIO.read(new File("cover-fruits.jpg")); 
     }catch (IOException e){ 

     } 



     File f = new File("stego_rgb.txt"); 
     if(!(f.exists())){ 
      System.out.println("Sorry file are not exist"); 
      System.exit(0); 
     } 


     Scanner in = new Scanner(f); 
     String data = null; 
     int rgb = 0; 
     int rgb1 = 0; 
     p=0; 


     while(in.hasNextInt()){ 
      data = in.nextLine(); 
      StringTokenizer st = new StringTokenizer(data," "); 
      for(s=0;s<steg;s++){ 
       rgb = Integer.parseInt(st.nextToken()); 
       rgb_steg[p][s] = rgb; 
       rgb1 = rgb_steg[p][s]; 
      } 
      p++; 


     } 




     for(int y = 0 ; y <img.getHeight() ; y++){ 
       for(int x = 0; x < img.getWidth() ; x++){ 
        img.setRGB(x, y, rgb1); 
       } 
      } 





    File output = new File("saved.png"); 
    ImageIO.write(img , "png", output); 

    img = ImageIO.read(new File("saved.png")); 



    } 

     public static void main(String[] args) throws Exception{ 
     JFrame f = new JFrame("Load Image"); 
     f.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e){ 
       System.exit(0); 
      } 
}); 

     f.add(new CreateImage()); 
     f.pack(); 
     f.setVisible(true); 
    } 





} 

.txt에서 RGB 값을 읽고 이미지를 만들려고합니다.하지만 그것을 할 수 없었습니다. 나는 Creating Image from Pixel Values 에서 아이디어를 얻었지만 여전히 얻을 수 없었다. 희망은 누구든지 나를 도울 수 있습니다..txt로 저장된 RGB 값에서 이미지를 만드는 방법

+0

텍스트 필드에서 이미지의 너비/높이를 어떻게 알 수 있습니까? – MadProgrammer

+0

나는 테스트 할 이미지의 너비/높이를 설정합니다. 실제로 우리는 .getheight() 및 .getWidth()를 사용하여 이미지의 너비/높이를 얻을 수 있습니다. –

답변

0

다음은 하드 코드 된 값으로 이미지를 만드는 간단한 예제입니다. 배열 값의 모집단을 동적으로 만드는 것은 너무 어렵지 않아야합니다.

import java.awt.*; 
import java.awt.image.*; 
import javax.swing.*; 

public class ImageFromArray2 extends JFrame 
{ 
    int width = 50; 
    int height = 50; 
    int imageSize = width * height * 3; 

    public ImageFromArray2() 
    { 
     JPanel panel = new JPanel(); 
     getContentPane().add(panel); 
     int[] pixels = new int[imageSize]; 

     // Create Red Image 

     for (int i = 0; i < imageSize; i += 3) 
     { 
      pixels[i] = 255; 
      pixels[i+1] = 0; 
      pixels[i+2] = 0; 
     } 

     panel.add(createImageLabel(pixels)); 

     // Create Green Image 

     for (int i = 0; i < imageSize; i += 3) 
     { 
      pixels[i] = 0; 
      pixels[i+1] = 255; 
      pixels[i+2] = 0; 
     } 

     panel.add(createImageLabel(pixels)); 

     // Create Blue Image 

     for (int i = 0; i < imageSize; i += 3) 
     { 
      pixels[i] = 0; 
      pixels[i+1] = 0; 
      pixels[i+2] = 255; 
     } 

     panel.add(createImageLabel(pixels)); 

     // Create Cyan Image 

     for (int i = 0; i < imageSize; i += 3) 
     { 
      pixels[i] = 0; 
      pixels[i+1] = 255; 
      pixels[i+2] = 255; 
     } 

     panel.add(createImageLabel(pixels)); 

    } 

    private JLabel createImageLabel(int[] pixels) 
    { 
     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
     WritableRaster raster = image.getRaster(); 
     raster.setPixels(0, 0, width, height, pixels); 
     JLabel label = new JLabel(new ImageIcon(image)); 
     return label; 
    } 

    public static void main(String args[]) 
    { 
     JFrame frame = new ImageFromArray2(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

간단한 배열을 사용하지만 각 픽셀에 RGB 값을 지정하려면 3 개의 슬롯이 필요합니다.

+0

camickr, 내 질문에 대한 답변을 얻지 못했고 새로운 질문을 제기 할 수 없습니다. 여기 나를 도와주세요. http://stackoverflow.com/questions/17220399/cannot-instantiate-a-class-using-a-button –

+0

camickr, code for .it 나를 도와주세요. 실제로 .txt에서 RGB 값을 읽는 데 문제가 있습니다. rgb.txt를 읽고 해당 값에서 이미지를 만들고 싶습니다. –

+0

'실제로 저는 .txt'에서 RGB 값을 읽는 데 문제가 있습니다 - @noobprogrammer이므로 파일을 읽는 방법을 보여주는'SSCCE '를 게시하고 정수 값을 배열에 추가하십시오. – camickr

관련 문제