2016-08-29 17 views
1

3000 x 3000ピクセルの画像をAndroidスタジオにアップロードしました。Androidで画像の解像度を上げる方法

イメージをアプリケーションに追加しようとすると、イメージがシャープに見えません。

enter image description here

は、ここで私は私のイメージは、画像表示のための十分な大きさであることを信じている私のXMLコード

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="200dip" 
    android:scaleType="fitCenter" 
    android:contentDescription="" 
    android:layout_marginTop="20dip" 
    android:layout_marginBottom="28dip" 
    android:src="@mipmap/login_logo" /> 

です。誰も私のイメージの解像度を上げる方法について私にアドバイスできますか?

私はのonCreate()関数で使用する方法を提案する私が画像をアップロードする場合、画像の4つの異なるバージョンがシステム

enter image description here

+0

@Enzokieを使用することができるように、結果は限りより専門的になり、イエスのバージョンがすでに作成された私の更新に示すように、 OPのスクリーンショット。 – Zhen

+1

9枚のパッチ画像を使用できます。 –

+0

@IntelliJAmiya、ありがとう。 adjustviewboundsは何をしますか? – Zhen

答えて

2

ロードするためにBitmapFactoryを使用し、実際に3000ピクセルで3000を持っていませんWICH。それを確認してください。

アプリケーションは、より適切なサイズ(hdpi、xhdpiなど)を使用しています。しかし、手動でサイズを変更しています。そのため、アイコンは画面内では鮮明ではありません。

手動イメージアセットを作成すると、これは画面サイズによって実際のサイズになります。アシスタンは元の画像を取り込み、それを再現します。ピクセルで

ldpi (low) ~120dpi 
mdpi (medium) ~160dpi 
hdpi (high) ~240dpi 
xhdpi (extra-high) ~320dpi 
xxhdpi (extra-extra-high) ~480dpi 
xxxhdpi (extra-extra-extra-high) ~640dpi 

LDPI - 0.75x 
MDPI - Original size you want to show 
HDPI - 1.5x 
XHDPI - 2.0x 
XXHDPI - 3x 
XXXHDPI - 4.0x 

https://developer.android.com/guide/practices/screens_support.html

36x36 (0.75x) for low-density 
48x48 (1.0x baseline) for medium-density 
72x72 (1.5x) for high-density 
96x96 (2.0x) for extra-high-density 
144x144 (3.0x) for extra-extra-high-density 
192x192 (4.0x) for extra-extra-extra-high-density 

あなたはこの指示に従って、カスタム画像アセットを作成し、それを解決することができますまたは、Picassoのような外部ライブラリを使用して、元の画像を読み込んでそれを適合させることができます。あなたが動的にフィットなどのプレースホルダ、errorimage、

https://www.google.es/?ion=1&espv=2#q=picasso%20android

Picasso.with(getActivity()) 
    .load(new File("path-to-file/file.png")) 
    .into(imageView); 
1

で自動的に作成された

更新します。これは、問題はあなたがアイコンセットを作成しているということであるあなたのイメージ

Options options = new BitmapFactory.Options(); 
options.inScaled = false; 
Bitmap source = BitmapFactory.decodeResource(a.getResources(), path, options); 
ImageView mImg; 
mImg = (ImageView) findViewById(R.id.imageView); 
mImg.setImageBitmap(source); 
+0

であることです。3000x3000 32ビットのビットマップは36MBを占有します。これは良いアイデアですか? – lelloman

+0

彼の質問は、画像の解像度を上げることを目指しています。私はちょうど彼にこれのための選択肢を与える。大きすぎる場合は、スケールを使用して解像度を下げることができます。それは上記のコードの1つのパラメータです – Jame

+0

アンドロイドはさまざまな密度の異なるサイズの画像を扱うことができます、なぜあなたはそれを汚い方法でやりたいのですか? – lelloman

関連する問題