Android の ImageView で画像を拡大しようとしていますが、どの設定を試しても、縮小された画像は常に醜く見えます。私のコードで生成された画像は次のとおりです。
http://i.imgur.com/4yubR.png?1
左側の画像は、デスクトップ コンピューターで ImageMagick を使用して事前にスケーリングされています。ImageView は、この画像を問題なく表示できます。右側の画像は、ImageView によって実際にスケーリングされたものであり、はっきりとわかるように、非常に醜く見えます :/
上記の両方の画像を生成するコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
RelativeLayout body = new RelativeLayout(this);
for(int i = 0; i < 2; ++i)
{
ImageView iv;
iv = new ImageView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(34, 34);
params.leftMargin = i*50;
body.addView(iv, params);
AssetManager am = this.getAssets();
try
{
BufferedInputStream buf;
if(i == 0)
buf = new BufferedInputStream(am.open("images/search_34x34.png"));
else
buf = new BufferedInputStream(am.open("images/search.png"));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
BitmapDrawable bd = new BitmapDrawable(bitmap);
bd.setAntiAlias(true);
iv.setImageDrawable(bd);
buf.close();
}
catch(java.io.IOException e)
{
}
}
setContentView(body);
}
何か不足している場合は教えてください。Android が画像をこれほどひどくスケーリングするとは信じられません (実際、これがデフォルトの動作であるとは信じがたいです)。
また、アプリは出所不明の画像を処理する必要があるため、画像を事前にスケーリングしたくないことに注意してください。そのため、その場でスケーリングする必要があります。