[解決済み】Androidで大きなビットマップファイルを拡大縮小して出力する。
質問
あるファイルに大きなビットマップ(例えば3888x2592)が入っています。今、そのビットマップを800x533にリサイズして、別のファイルに保存したいのですが、どうすればいいですか?
通常、ビットマップのサイズを変更するために
Bitmap.createBitmap
メソッドが必要ですが、これは第一引数にソースビットマップが必要で、元画像をビットマップオブジェクトにロードすると当然ながらメモリを超えるので用意できません (
ここで
など)。
また、例えばでビットマップを読めない。
BitmapFactory.decodeFile(file, options)
を提供することで
BitmapFactory.Options.inSampleSize
というのも、正確な幅と高さにリサイズしたいからです。使用方法
inSampleSize
を使うと、ビットマップは972x648にリサイズされます(もし私が
inSampleSize=4
を使用した場合)または 778x518 になります。
inSampleSize=5
2の累乗ですらない)。
また、inSampleSizeを使って、例えば、1段階目で972x648で画像を読み込んで、2段階目で800x533ちょうどにリサイズするのは、元画像を直接リサイズするのに比べて品質が悪くなるので避けたいですね。
私の質問をまとめると 10MP以上の大きな画像ファイルを読み込んで、特定の新しい幅と高さにリサイズして、OutOfMemory例外を発生させずに、新しい画像ファイルに保存する方法はありますか?
また、試しに
BitmapFactory.decodeFile(file, options)
で、Options.outHeightとOptions.outWidthの値を手動で800と533に設定しましたが、そのようにうまくいきません。
どうすればいいですか?
いいえ。 どなたかに訂正していただきたいのですが、あなたが試したロード/リサイズ方式は妥協案として認めました。
以下、閲覧している人のために手順を説明します。
-
可能な限りの最大値を計算する
inSampleSize
の場合、目標値よりも大きな画像を得ることができます。 -
を使用して画像を読み込みます。
BitmapFactory.decodeFile(file, options)
オプションとして inSampleSize を渡します。 -
を使用して、必要な寸法にリサイズします。
Bitmap.createScaledBitmap()
.
関連
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】"ビットマップが大きすぎてテクスチャにアップロードできない"
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] Android M パーミッション : shouldShowRequestPermissionRationale()関数の使用方法について混乱しています。
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] CSS 画像サイズ、どのように埋めるために、しかし、ストレッチしない?
-
[解決済み] CSSで画像をリサイズ、トリミングして表示する
-
[解決済み】Androidでビットマップのサイズを変更する方法は?
-
[解決済み】android.widget.ImageViewの幅と高さを取得する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み】Android Studioで最新バージョンのgradleを使用する方法
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] ビットマップのAndroidクロップセンター