2010-12-31 8 views
1

イメージを9個に分割するためにこのコードを書いており、ランタイムエラーが発生します。 LogCatにエラーはなく、私は立ち往生しています。エラーは、7行目の下から来ています(Bitmap.createBitmap(...);)。代わりに(少なくとも部分的に)存在しないことを画像の部分をフェッチ回避するAndroid用のこのJavaコードで何が問題になっていますか?

for (int x = 0; x <= width; x += cellWidth) { 
     for (int y = 0; y <= height; y += cellHeight) { 

使用

for (int x = 0; x+cellWidth < width; x += cellWidth) { 
     for (int y = 0; y+cellHeight < height; y += cellHeight) { 

public Bitmap[] getPieces(Bitmap bmp) { 
     Bitmap[] bmps = new Bitmap[9]; 

     int width = bmp.getWidth(); 
     int height = bmp.getHeight(); 

     int rows = 3; 
     int cols = 3; 

     int cellHeight = height/rows; 
     int cellWidth = width/cols; 

     int piece = 0; 

     for (int x = 0; x <= width; x += cellWidth) { 
      for (int y = 0; y <= height; y += cellHeight) { 
       Bitmap b = Bitmap.createBitmap(bmp, x, y, cellWidth, 
         cellHeight, null, false); 
       bmps[piece] = b; 
       piece++; 
      } 
     } 

     return bmps; 
    } 
+5

そして、エラーは? –

+0

LogCatにエラーはありませんが、android.jarにエラーがあると言います – Neutralizer

+0

android.jarのエラーは何ですか? –

答えて

2

+0

私はあなたのガイドに従って修正しましたが、それでもエラーが出ます。エラーはandroid.jarにあり、「ソースが見つかりません」と表示されます。 – Neutralizer

+0

ピースはまだbmpsの範囲外に出ることができます。あなたは、下部と右側のピースを大きくするか、余分なものを落とす必要があります。 –

4

これは、適切なエラーメッセージが表示されないアンドロイドフレームワークの制限です。理想的な解決策はtry/catchブロックにコードをラップし、例外をコンソールに記録し、それに応じてコードを修正することですが、デバッグの目的でのみ使用してください。

try { 
    // Code 
} 
catch (Exception e) { 
    Log.e("ERROR", "ERROR IN CODE:"+e.toString()); 
} 

ここから抽出された上記のコード:あなたはBMPの上の範囲外のインデックスを取得しているので、あなたのコードで

http://moazzam-khan.com/blog/?p=41

0

、作品は、8よりも大きくすることができます。一番右のものと一番下のものがすべて余分にあり、必ずしも同じサイズではないように書き直す必要があります。

また、同じサイズにする必要がある場合は、追加の行/列を削除してください。確かに、私はこのような私のforループを策定するだろう

for (int cellX = 0; cellX < 3; cellX++) { 
     int x = cellX * cellWidth; 
     for (int cellY = 0; cellY < 3; cellY++) { 
       int y = cellY * cellHeight; 
       // find the cellWidth/Height that doesn't overflow the original image 
       Bitmap b = // get the bitmap 

       bmps[piece] = b; 
       piece++; 
     } 
    } 
関連する問題