この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaでの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これから Androidのアプリ開発やJavaでの開発を始めたい方への案内は、記事の最後で紹介します)
画像データの回転と回転で発生する余白を透過させる
低価格ながら本格的な画像編集ソフト
ポイント
Viewの回転自体はsetRotationで実装できますが、画像データを回転する場合はすこし工夫が必要です。
今回は、画像データの回転と回転で発生する余白の透過の実装を紹介します。

画像データの回転処理
ImageViewを継承したクラスに画像データの回転処理メソッドとして実装します。
画像データを回転はMatrixを使用します。
public class RotateImageView extends AppCompatImageView {
:
private Bitmap base;
public RotateImageView(Context context) {
super(context);
}
public RotateImageView(Context context, AttributeSet attrs) {
super(context, attrs, defStyleAttr);
setScaleType(ScaleType.MATRIX);
:
}
public void setImageBitmap(Bitmap bitmap) {
base = bitmap;
super.setImageBitmap(bitmap);
}
:
public Bitmap rotateBitmap(float angle) {
Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
this.draw(new Canvas(bitmap));
// 回転
super.setImageBitmap(null);
Matrix matrix = new Matrix();
matrix.postRotate(angle, (float) (bitmap.getWidth() * Math.cos(angle)), (float) (bitmap.getHeight() * Math.sin(angle)));
Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
draw(new Canvas(bitmap2));
// 元に戻す
super.setImageBitmap(base);
this.matrix.postTranslate(0, 0);
invalidate();
return bitmap2;
}
}
回転した画像データをCanvasに展開し、回転した画像データのBitmapを取り出します。
回転で発生する余白を透過させるため、画像データの回転する前にnullをセットします。
画像データを回転してファイル出力
ImageViewを継承したクラスで画像ファイルの読み込み、画像データの回転、画像データをファイル出力します。
:
// 画像データの読み込み
RotateImageView rotate = findViewById(R.id.rotate);
try (FileInputStream fileinputStream= new FileInputStream(new File(context.getFilesDir(), "input.png"))) {
Bitmap bitmap = BitmapFactory.decodeStream(fileinputStream);
rotate.setImageBitmap(bitmap);
} catch (Exception e) {
// エラー処理
:
}
:
// 画像データを45度回転
Bitmap bitmap = rotate.rotateBitmap(45f);
:
// 画像データの出力
try (FileOutputStream fileOutputStream = new FileOutputStream(new File(context.getFilesDir(), "output.png"))) {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
} catch (Exception e) {
// エラー処理
:
}
回転で発生する余白を透過させる場合、ファイル形式はPNGにします。
今回は、ここまでです。
画像データの回転処理しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。
未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪
コメント欄