2017-08-28 19 views
0

私はカスタムビュー(WorldMapView)、地図描画可能(3209x1287、PNG、64ビットカラー、1.33M)を持っていると私はPNG形式を使用してビットマップを圧縮するにはどうすればよいですか?

java.lang.RuntimeException取得しています:キャンバス:大きすぎるを描画しようとします(148679388bytes)ビットマップ。

このように圧縮しようとしました。

WorldMapView worldMapView = (WorldMapView) itemView.findViewById(R.id.map_of_world); 
    Bitmap bitmap = ((BitmapDrawable) ContextCompat.getDrawable(context, R.drawable.map)).getBitmap(); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
    Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray())); 
    worldMapView.setImageBitmap(decoded); 

しかし、あなたはPNGは、ロスレス形式であるため、それはあなたのイメージを圧縮しないであろうPNG形式を使用しているので、誰もが解決策を提案してくださいすることができますか?

ありがとうございました。

+1

'PNG形式を使用している場合、PNGはロスレス形式なのでイメージは圧縮されません。 –

答えて

2

私はあなたが別のBitmapBitmapを "圧縮" することはできません。この

のように圧縮してみました。画像は、一部のファイル形式(例:PNG、JPEG、WebP)でディスクのに圧縮されています。 Bitmapは、であり、常にの非圧縮です。

あなたはPNG形式を使用している場合、PNGこれはあなたの問題とは無関係です

ロスレス形式ですので、それはあなたのイメージを圧縮しません。 PNGはディスク上の形式です。 Bitmapはありません。 BitmapからBitmapに移動すると、使用する画像フォーマットに関係なく、ビットマップが圧縮されません。

誰でも解決策を提案できますか?

画像の解像度を90%程度低下させます。

または、大きい画像(たとえば、this one)を扱うビューを使用します。

+0

ありがとうございます。 –

関連する問題