2016-05-19 8 views
2

画像を200x1000とし、10番目の高さで同じ幅(200x100)の画像にするには、Javaで書くことができる最短のコードは何ですか?イメージをサブイメージに分割する方法は?

鉱山はかなり長いコードです。主な部分は、私はちょうど与えている:

for (int i_=0;i_<10;i_++) 
 
      { 
 
       for(int k=i_*100;k<i_*100+h/10;k++) 
 
        { 
 
         for(int j_=0;j_<w;j_++) 
 
          { 
 
     
 
           int pixv=img.getRGB(j_,k); 
 
           r=(pixv>>16)&0xff; 
 
           g=(pixv>>8)&0xff; 
 
           b=(pixv)&0xff; 
 
           int rgb=new Color(r,g,b).getRGB(); 
 
           img.setRGB(j_,k-i_*200,rgb); 
 
          } 
 
        } 
 
       // Here I am writing the img to a new .bmp file thus creating 10 seperate files 
 
      }

をここIMGすると、サブを得ることができます

+1

を、あなたは何を試してみましたか?何人かの努力を示すまで誰もあなたの(自宅)仕事をすることはできません。 –

+0

私は、int rgbの部分よりも3つのネストされたforループを気にします – Jankapunkt

+0

@ Jankapunkt長い間、私は自分が必要としなかった多くの役に立たない余分なものを使っていることを理解していると言います。 – AbracaDabra

答えて

1

大きな画像のBufferedImageの

ワット、時間幅と高さでありますgetSubimage(int x、int y、int w、int h)を使用してBufferedImageの画像を取得します。このお試しください:

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 

public class NewClass9 { 

public static void main(String[] args) throws IOException{ 
    BufferedImage img = null; 
    img = ImageIO.read(new File("C:\\users\\uzochi\\desktop\\Penguins.jpg")); 
    for(int i = 0;i<10;i++){ 
    BufferedImage sub = img.getSubimage(0, i*(img.getHeight()/10), img.getWidth(), img.getHeight()/10); 
    File f = new File("C:\\users\\uzochi\\desktop\\SubImage"+i+".png"); 
    ImageIO.write(sub, "png", f); 
    } 
} 

}

関連する問題