Android.graphics.Bitmap.createScaledBitmap
の宣言は
public static Bitmap createScaledBitmap
(Bitmap src, int dstWidth, int dstHeight, boolean filter)
ただし、ドキュメントにはパラメーターの説明はありません。 boolean filter
を除き、それらはすべて明白です。誰がそれが何をしているのか知っていますか?
SKIAソースコードをすばやく調べると、(少なくともデフォルトでは)FILTERフラグが原因で単純な双線形補間が行われていることがわかります。ウィキペディアまたはお気に入りのグラフィックリファレンスをチェックして、予想される結果を確認してください。従来、画像をアップサイズする場合はバイリニア補間またはバイキュービック補間を行い、画像をダウンサイズする場合は面積平均を行います。 Android/Skiaはフィルタリングなしでダウンサイジングすると単純なサブサンプリングを実行するという印象を受けます(修正できてうれしいです)。したがって、ダウンサイジングでもフィルタリングからより良い結果が得られる可能性があります。 (補間を使用して高品質のダウンサイジングを行う別の方法があります。これには、一連の50%の縮小が含まれます。 http://today.Java.net/pub/a/today/2007/04/03/ perils-of-image-getscaledinstance.html 詳細については)
カランの答えを拡張するには:一般的なルールとして、画像をスケーリングしている場合downに違いは見られませんが、再スケーリングup。
filter = false
を渡すと、ブロック状のピクセル化された画像になります。
filter = true
を渡すと、エッジがより滑らかになります。
ただし、EIYeanteがコメントで指摘したように、あなたはまだ違いを見るかもしれません。 これは彼らのサンプル画像です。
フィルタは、 FILTER_BITMAP_FLAG を設定します。これは、指定した値に基づいて変換されるビットマップのサンプリングに影響を与えます。