[Android] Matrixで画像を回転、フリップ、縮小させる

cat45 01 - [Android] Matrixで画像を回転、フリップ、縮小させる
画像を拡大、回転させたりするときは、Matrixを使うことができます。ただし基本的に画像処理はパフォーマンス、メモリを使いますので注意しましょう。

Android Studio 3.4.2
API 29
AndroidX



Matrix

 
画像を拡大縮小させて表示する方法としてはImageViewのレイアウトを使うことで可能です。

cat47 00 100x100 - [Android] Matrixで画像を回転、フリップ、縮小させる
動的に画像を動かしたり、サイズを拡大・縮小するには、xmlのレイアウトではうまくいきません。拡大縮小などはコードで実装すると可能です。  ...

Matrixを使って画像そのものを拡大縮小、あるいは回転、フリップさせてしまう方法もあります。
 
matrix 01 - [Android] Matrixで画像を回転、フリップ、縮小させる
 

目次
1. ImageView
  リソース画像をBitmapで取り出します
2. Rotation
  setRotateで画像を回転させる
3. Resize
  preScaleで画像の拡大・縮小
4. Flip
  preScaleの符合を変えてフリップ
5. サンプルコード
 

ImgeView

 

最初に画像をdrawableに置きます。これを回転、リサイズ、フリップさせていきます。
 

kurumi e1457743510263 - [Android] Matrixで画像を回転、フリップ、縮小させる

kurumi.jpg

 
画像をImageViewにセットするためには

とすればできますが、画像をこの後 Mtrix に渡していくためにBitmapとして取り出します。

まとめてみると

 

Rotation (setRotate)

 
画像を90度回転させます。
 

 
px, pyを基点として回転させます。
 
Mtrixを使ってBitmapを再構築します。

 
MainActivity.java

 
 
90°回転しました
 
matrix 02 - [Android] Matrixで画像を回転、フリップ、縮小させる

 

Resize (preScale)

 
画像を縮小させてみます。ここでは prescale を使います

MainActivity.java

 
画像が縮小されました。
 
matrix 03 - [Android] Matrixで画像を回転、フリップ、縮小させる

 

Flip (preScale)

 
ボタンの背景として画像を水平方向にフリップさせてみます。
Buttonの背景とする場合は、表示サイズを適正にしないといけませんので、縦横比率と実際の幅、それにスクリーン幅を求めて計算していきます。
 
フリップは縮小拡大と同じですが符号を変えます
preScale(-1.0f, 1.0f)
と設定すると水平方向でのフリップです。
垂直方向は
preScale(1.0f, -1.0f)
 
MainActivity.java

 
水平方向にフリップしました
 
matrix 04 - [Android] Matrixで画像を回転、フリップ、縮小させる

 

サンプルコード

 
以上をまとめてボタンで機能を確認してみます。

MainActivity.java

 
activity_main.xml

 
strings.xml

 
これで実行させてみましょう。
 

 
 
関連:

Reference:
Matrix

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする