2017-11-13 14 views
-3

画像をトリミングする場合は、joshholtz(https://github.com/joshdholtz/CropImageView)のCropImageViewを使用しています。しかし、私は返す行の直前の最後の行のクロップ関数でCreateBitmap関数でIllegalArgumentException例外(x + widthは< = bitmap.width()でなければならない)を取得しています。joshdholtz CropImageView createbitmap java.lang.IllegalArgumentException:x + widthは<= bitmap.width()以下にする必要があります

public Bitmap crop(Context context) throws IllegalArgumentException { 
     // Weird padding cause image size 
     int weirdSidePadding = this.getWeirdSideMargin(); 
     int weirdVerticalPadding = this.getWeirdVerticalMargin(); 

     FrameLayout.LayoutParams params = (LayoutParams) mDaBox.getLayoutParams(); 

     // Getting crop dimensions 
     float d = context.getResources().getDisplayMetrics().density; 
     int x = (int)((params.leftMargin - weirdSidePadding) * d); 
     int y = (int)((params.topMargin - weirdVerticalPadding) * d); 
     int width = (int)((this.getWidth() - params.leftMargin - params.rightMargin) * d); 
     int height = (int)((this.getHeight() - params.topMargin - params.bottomMargin) * d); 

     Bitmap crooopppppppppppppppeed = Bitmap.createBitmap(mBitmap, x, y, width, height); 

     return crooopppppppppppppppeed; 
} 

実際に私は潜在的に同じ質問を見ましたが、不都合にも、私の状況と同じ程度に私を助けてくれません。

この障壁を乗り越えてもらえますか?

+0

問題の実際のコードと完全なスタックトレースをここに掲載します。他のサイトへのリンクを使用しないでください。 –

+0

お返事ありがとうございました。上のコードの戻り行の前の最後の行は、例外をスローします。 –

答えて

0

createBitmapでは、使用している関数が元のビットマップのサブセクションからビットマップを作成します。それが動作するためには、x + widthは元のビットマップの幅より大きくならないかもしれません(y + heightで同じです)。そしてxとyは両方とも> = 0でなければなりません。これはここでは当てはまりません。

私はこの機能が何をしようとしているのかと思っていますが、それは間違っています。クロッピングとスケーリングという考えを混同しているようです。一度にビットマップを拡大/縮小したい場合は、行列m内の倍率でcreateBitmap(ビットマップソース、int x、int y、int width、int height、Matrix m、boolean filter)を使用する必要があります。そして、私はあなたがここでスケーリングしたいとは思っていません - なぜコードが密度を調べているのか分かりませんが、そうするのは間違いでしょう。

+0

ありがとう、Gabe、あなたの答えです。私がインターネットで簡単な作物の図書館を探したとき、不運にも私はその図書館を見つけました。しかし、それは私のためではないようです。私が探しているのはシンプルなライブラリです(切り抜きは大丈夫ですが、スケーリングは必要ありません)。何か提案がありますか、ガベ? –

関連する問題