回答:
SKIAソースコードをすばやく掘り下げると、(少なくともデフォルトで)FILTERフラグによって単純な双一次補間が行われることがわかります。ウィキペディアまたはお気に入りのグラフィックスリファレンスをチェックして、予想される結果を確認してください。従来は、画像をアップサイズするときにバイリニアまたはバイキュービック補間を行い、画像をダウンサイズするときにエリア平均化を行います。Android / Skiaはフィルタリングなしでダウンサイジングするときに単純なサブサンプリングを行うという印象を受けます(訂正してよかったのですが)。そのため、ダウンサイジングしているときでも、フィルタリングからより良い結果が得られるでしょう。(一連の50%のスケール削減を行うことを含む、補間を使用して高品質のダウンサイジングを行う別の方法があります。http://today.java.net/pub/a/today/2007/04/03/perils-of-を参照してください。image-getscaledinstance.html 詳細については。)
カランの答えに展開するには:一般的なルールとして、あなたのイメージスケーリングしている場合、あなたはどんな違いが表示されませんダウンしていますが、あなたはそれをスケーリングしているかどうアップ。
合格filter = false
すると、ブロック状のピクセル化された画像になります。
合格filter = true
すると滑らかなエッジになります。
ただし、EIYeanteがコメントで指摘したように、まだ違いが見られるかもしれません。これはサンプル画像です。
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
ます。フィルターパラメーターを変更しているだけです。
Filterは、ペイントするFILTER_BITMAP_FLAGを設定します。これは、指定した値に基づいてビットマップが変換されるときに、ビットマップのサンプリングに影響します。
パーティーには少し遅れましたが、サンプル画像で問題が明らかになるのではないかと思いました。
AndroidのAPIは適用されるフィルターの種類を指定していないため、問題は、おそらくピクセルをそのまま(8ビットアートの場合と同じように)残しておきたいですか、それとも変換を適用しても大丈夫ですか? (写真で望むように)イメージをより美しくします。
スーパーユーザーでフィルタリングするかどうか、およびどのようにフィルタリングするかについて、より一般的な質問があります。
ジェフ・アトウッドは言う:
一般に、大きな画像を小さな画像にする場合は穏やかなシャープ効果を、小さな画像を大きな画像にする場合は穏やかなぼかし効果を望みます。