基本的に、私は長方形のビットマップを持っており、その中に長方形のビットマップを含む正方形の寸法を持つ新しいビットマップを作成したいと考えています。
たとえば、ソース ビットマップの幅が 100 で高さが 400 の場合、幅が 400 で高さが 400 の新しいビットマップが必要です。次に、この新しいビットマップの中心にソース ビットマップを描画します (理解を深めるために、添付の画像を参照してください)。
以下の私のコードは正方形のビットマップをうまく作成しますが、ソースビットマップはそれに描画されていません。その結果、完全に黒のビットマップが残ります。
コードは次のとおりです。
Bitmap sourceBitmap = BitmapFactory.decodeFile(sourcePath);
Bitmap resultBitmap= Bitmap.createBitmap(sourceBitmap.getHeight(), sourceBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(resultBitmap);
Rect sourceRect = new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight());
Rect destinationRect = new Rect((resultBitmap.getWidth() - sourceBitmap.getWidth())/2, 0, (resultBitmap.getWidth() + sourceBitmap.getWidth())/2, sourceBitmap.getHeight());
c.drawBitmap(resultBitmap, sourceRect, destinationRect, null);
// save to file
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
File file = new File(mediaStorageDir.getPath() + File.separator + "result.jpg");
try {
result.compress(CompressFormat.JPEG, 100, new FileOutputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
私が間違っていることは何か分かりますか?