忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 07:22 】 |
画像の切り取り(Android)
Androidで画像を切り取る方法。

参考

iOSと比べて面倒。
BitmapRegionDecoderというクラスを使う。
このクラスは、コンストラクタにFileインスタンスを渡して作成する。
decodeRegion()というメソッドにRectを渡すと、その範囲を切り取ったBitmapインスタンスを返す。


import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.BitmapRegionDecoder;
import android.graphics.Rect;

public Bitmap clip(String originFilePath, Rect rect)
{
FileInputStream inputStream = new FileInputStream(new File(originFilePath));

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(inputStream, true);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;

return decoder.decodeRegion(rect, options);
}





単にファイルからビットマップを作りたいときは

// filePath ... ファイルパス
File file = new File(filePath);
FileInputStream inputStream = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);


となる。
デコードに失敗するとnullが返ることになる。


ちなみに、アセット内の画像ファイルからビットマップを読み込む方法は

// fileName ... アセット内のファイル名
AssetManager assetManager = getResources().getAssets(); //getResources()はContextのメンバ関数。ActivityはContextなので、Activity内ならそのまま使える
InputStream inputStream = assetManager.open(fileName);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);


となる。


逆に、ビットマップをファイルに書き出すときは

// filePath ... 書き出すファイル名
// bitmap ... 書き出したい画像データ
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
bitmap.compress(CompressFormat.PNG, 80, fileOutputStream);


とする。bitmapの中身がfileに書き出される。

PR
【2015/04/05 11:28 】 | Android | 有り難いご意見(0)
<<addActionでエラー | ホーム | 画像の切り取り(iOS)>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>