2012-03-01 21 views
0

境界画素を何回も複製しようとしています。私は上の国境の一部のためにそれをすることができたが、残りの部分と苦労している。私が達成しようとしているものがあまりにも複雑に見えるので、これを行う簡単な方法はありますか?BufferedImage重複枠線

public BlurredImage(int n) { 

    try { 
     castle = ImageIO.read(this.getClass().getResource("test.png")); 
    } catch (IOException e) { 
     System.out.println("cannot read image"); 
    } 

    int w = (2*n)+castle.getWidth(); 
    int h = (2*n)+castle.getHeight(); 

    int origW =castle.getWidth(); 
    int origH = castle.getHeight(); 
    System.out.println(w); 
    System.out.println(h); 
    BufferedImage enlargedImage = new BufferedImage(w, h, castle.getType()); 

    //Map existing image 
    for (int y=0; y < origH; y++){ 
     for (int x=0; x < origW; x++){ 
      enlargedImage.setRGB(x+n, y+n, castle.getRGB(x, y)); 
     } 
    } 

    //Top border 
    for (int y=0; y < n; y++){ 
     for (int x=0; x < origW; x++){ 
      enlargedImage.setRGB(x+n, y, castle.getRGB(x, 0)); 
     } 
    } 

    //Bottom border 
    for (int y=0; y > y+n; y++){ 
     for (int x=0; x < origW; x++){ 
      enlargedImage.setRGB(x+n, y, castle.getRGB(x, 0)); 
     } 
    } 
} 
+1

をあなたが偶然に、画像を拡大していません - 'n 'ピクセルだけシフトするだけです...達成しようとしていることを明確にすることはできますか? 「境界ピクセルを複製する」とはどういう意味ですか?私たちが実際に走らせることができる適切な[SCCEE](http://sscce.org)は、部分的なコードではなく、私たちが手助けしやすくなります。 – DNA

答えて

0

ボトムボーダーの問題は、y値と.setRGBのfor-loopです。 .setRGBは上の枠線のコピー/ペーストであるように見え、上の枠線のコードと同じピクセルを取得/設定しています。私は少しあなたのコードを変更:希望の国境部数、およびSetRGBは/のgetRGB参照オーバーforループyが今反復処理し、画像内の正しい位置

//Bottom border 
for (int y = 0; y < n; y++){ 
    for (int x = 0; x < origW; x++){ 
     enlargedImage.setRGB(x + n, h - 1 - y, castle.getRGB(x, origH - 1)); 
    } 
}