Android:java.lang.OutOfMemoryError:OOMまで2097152の空きバイトと2MBの23970828バイトの割り当てに失敗しました


355

すでに保存されているSDカードのImageViewでビットマップ画像を表示したい。実行後、アプリケーションがクラッシュし、次のOutOfMemoryErrorエラーが発生します。

(java.lang.OutOfMemoryError:23970828バイトの割り当てに2097152フリーバイト、OOMまで2 MBを割り当てることができませんでした)

私はそれがメモリ不足であるか、なぜかわかりません。画像サイズが非常に大きいと思いますので、変更してみました。

Iterator<String> it = imageArray.iterator();
while (it.hasNext()) {
  Object element = it.next();
  String objElement = element.toString();
  Log.e("objElement ", " = " + objElement);
  final ImageView imageView = new ImageView (getContext());
  final ProgressBar pBar = new ProgressBar(getContext(), null, 
                                           android.R.attr.progressBarStyleSmall);
  imageView.setTag(it);
  pBar.setTag(it);

  imageView.setImageResource(R.drawable.img_placeholder);
  pBar.setVisibility(View.VISIBLE);

  if (objElement.endsWith(mp3_Pattern)) {
     Log.e("Mp3 ", " ends with ");
     pBar.setVisibility(View.GONE);
     imageView.setImageResource(R.drawable.audio_control);
  }
  if (objElement.endsWith(png_Pattern)) {
     Bitmap bitmap = BitmapFactory.decodeFile(objElement);
     int size = Math.min(bitmap.getWidth(), bitmap.getHeight());
     int x = (bitmap.getWidth() - size) / 2;
     int y = (bitmap.getHeight() - size) / 2;
     Bitmap bitmap_Resul = Bitmap.createBitmap(bitmap, x, y, size, size);
     Log.e("bitmap_Resul "," = "+ bitmap_Resul);

     if (bitmap_Resul != bitmap) {
        bitmap.recycle();
     }
     imageView.setImageBitmap(bitmap_Resul);
     Log.e("png_Pattern ", " ends with ");
     Log.e(" bitmap "," = " + bitmap);
  }

  holder.linearLayout.addView(imageView);
  holder.linearLayout.addView(pBar);

ログ猫情報:

08-27 14:11:15.307    1857-1857/? E/AndroidRuntime FATAL EXCEPTION: main
    Process: com.example.tazeen.classnkk, PID: 1857
    java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:812)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:789)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:709)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:634)
            at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getView(AllPosts_Page.java:357)
            at android.widget.AbsListView.obtainView(AbsListView.java:2347)
            at android.widget.ListView.makeAndAddView(ListView.java:1864)
            at android.widget.ListView.fillDown(ListView.java:698)
            at android.widget.ListView.fillFromTop(ListView.java:759)
            at android.widget.ListView.layoutChildren(ListView.java:1659)
            at android.widget.AbsListView.onLayout(AbsListView.java:2151)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
            at android.view.Choreographer.doCallbacks(Choreographer.java:580)
            at android.view.Choreographer.doFrame(Choreographer.java:550)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

4
画像のピクセルを確認します。幅が1440、高さ2560を超えてはなりません。これを行うと、OutOfMemoryError
Pankaj Lilan

1
@PankajLilanこれらの値(1440 X 2560)はどこで見つけましたか?Androidドキュメントからの参照はありますか?
LCJ、2017

回答:


525

OutOfMemoryErrorは、特にビットマップの処理中にAndroidで発生した最も一般的な問題です。このエラーは、メモリ領域が不足しているためにオブジェクトを割り当てることができず、ガベージコレクタが一部の領域を解放できない場合に、Java仮想マシン(JVM)によってスローされます。

Alekseyが述べたように、マニフェストファイルに以下のエンティティを追加できますandroid:hardwareAccelerated="false"android:largeHeap="true"これは、一部の環境で機能します。

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

特にここでは、Android開発者の概念のいくつかを必ず読んでください。ビットマップを効率的に表示する

5つのトピックすべてを読み、コードをもう一度書き直してください。それでも問題が解決しない場合は、チュートリアルの資料で何が間違っているかを確認させていただきます。

ここでは、SOFでのこれらのタイプのエラーの考えられる回答のいくつか

Android:BitmapFactory.decodeStream()のメモリ不足、400KBのファイル、2MBの空きヒープ

Androidでjava.lang.OutOfMemoryErrorトラブルを解決する方法

Android:java.lang.OutOfMemoryError

java.lang.OutOfMemoryError

OutOfMemoryErrorの解決策:ビットマップのサイズがVMの予算を超える

編集:@cjnashのコメントから

この行を追加した後もクラッシュが発生した場合は、res / drawable /ではなくres / drawable-xhdpi /フォルダーに画像を貼り付けてみてください。問題が解決する可能性があります。


1
最終的に問題を解決した方法を投稿していただけますか?同じ問題があるので...実際にはマニフェストにこの行を追加できますandroid:hardwareAccelerated = "false"、android:largeHeap = "true"状況によっては機能しますが、コードの別の部分ではこれについて議論してください...
Aleksey Timoshchenko

6
これを追加すると、アプリのナビゲーションが非常に遅くなります。
Uma Achanta 16

10
android:hardwareAccelerated = "false"アプリをフリーズ
Rahim Rahimov

1
この行を追加した後もまだクラッシュした場合は、res / drawable /の代わりにres / drawable-xhdpi /フォルダーに画像を貼り付けてみてください。問題が解決する可能性があります。
cjnash

6
android:hardwareAccelerated = "falseを提案する理由は何ですか?その利点は何ですか?
batmaci 2017

86

これをアプリケーションの下のマニフェストに追加してみましたか? android:largeHeap="true"

このような

  <application
      android:name=".ParaseApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme"
      android:largeHeap="true" >

17
私はこのandroid:largeHeap = "true"で試しましたが、同じエラーが発生します
androidTag

1
このリンクを使用して画像を圧縮する前に、画像を圧縮してみてくださいtinyjpg.com
TSG

1
このサイトでpngを圧縮することもできます
TSG

27

私にとっての問題は、画像のサイズが非常に大きい(ファイルサイズが小さいにもかかわらず)ため、.pngファイルがメモリ内で本当に巨大なビットマップに解凍されていたことでした。

したがって、修正は単に画像のサイズを変更することでした:)


3
これは正しい解決策です。最初に上記の解決策を試しましたが、を適用した後android:hardwareAccelerated="false"、レイアウトシャドウなどの一部のアニメーションが機能しませんでした。しかし、すべての問題のサイズを変更した後、解決されましたありがとうございます!このヒントの+1!
Kaushal28

1
これで問題が解決しました。@petrusありがとう
ハングしたグエン

27

実際android:hardwareAccelerated="false"、これらの行をマニフェストに追加できます。android:largeHeap="true"これは状況によっては機能しますが、コードの他の部分がこれについて議論している可能性があることに注意してください。

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

2
動作しませんでした。Bitmap.createBitmapを使用すると、同じエラーでクラッシュしました
Narendra Singh

異なるアプローチがたくさんあります...申し訳ありません@King(私もこの問題を解決するためにいくつかの時間を費やし、それは私のための仕事である。しかし、それはただの方法の一つである。
アレクセイTimoshchenko

2
android:hardwareAccelerated = "false"の目的は何ですか?
IgorGanapolsky 2017年

@IgorGanapolsky公式ドキュメントによると.. このリンクを参照
Shylendra Madda

27

これはうまくいくはずです

 BitmapFactory.Options options = new BitmapFactory.Options();
 options.inSampleSize = 8;

 mBitmapSampled = BitmapFactory.decodeFile(mCurrentPhotoPath,options);

11

次のように、ImageViewにセットアップする前に画像のサイズを変更します。

Bitmap.createScaledBitmap(_yourImageBitmap, _size, _size, false);

ここで、sizeはImageViewの実際のサイズです。あなたが測定することによってサイズに到達することができます:

imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

そして次のサイズを使用imageView.getMeasuredWidth()してimageView.getMeasuredHeight()のためにscaling


私はこのandroid:largeHeap = "true"で試しましたが、同じエラーが発生します
androidTag

これが必ずしも機能しない理由の別の例(プライベートアプリストレージを使用):ビットマップをres / drawable /に配置すると、同じエラーが発生する可能性がありますが、毎回発生するわけではありません。同じビットマップをres / drawable-xhdpi /に配置しても、エラーは発生しなくなりました。答えとして、それ自体では正しくありません。
CmosBattery

8

Glide LibraryとOverride sizeを使用してサイズを小さくします。

Glide.with(mContext).load(imgID).asBitmap().override(1080, 600).into(mImageView);

6

エラーが発生しました

"E / art:ThOfing OutOfMemoryError" Failed to allocate a 47251468 byte allocation with 16777120 free bytes and 23MB until OOM "

AndroidManifest.xmlに追加android:largeHeap="true"した後、すべてのエラーを取り除きました

<application
    android:allowBackup="true"
    android:icon="@mipmap/guruji"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:largeHeap="true"
    android:theme="@style/AppTheme">

4

画像のサイズを小さくして、この問題を解決しました。xamarinフォームを使用しています。PNG画像のサイズを小さくすると問題が解決しました。


4

問題:OOMまで、16777120の空きバイトと17MBの37748748バイトの割り当てに失敗しました

解決策:1.マニフェストファイルを開きます2.アプリケーションタグ内で2行以下に追加します

 android:hardwareAccelerated="false"
 android:largeHeap="true"

例:

 <application
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:largeHeap="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

4

「描画可能」フォルダ内の画像は、高解像度の携帯電話ではより大きな画像に変換されることがわかりました。たとえば、200kの画像は800kや32000kなどの高解像度にリサンプリングされます。私はこれを自分で発見する必要があり、現在までにこのヒープメモリトラップのドキュメントを見ていません。これを防ぐために、すべてをdrawable-nodpiフォルダーに配置します(特定のデバイスヒープに基づいてBitmapFactoryで 'options'を使用することに加えて)。特に画面の定義の範囲が非常に広範になっているため、複数のドローアブルフォルダーでアプリのサイズを膨らませる余裕はありません。トリッキーなのは、スタジオがプロジェクトビューで 'drawable-nodpi'フォルダーを具体的に示していないことです。'drawable 'フォルダーのみが表示されます。注意しないと、スタジオのこのフォルダーに画像をドロップすると、

Careful here 'backgroundtest' did not actually go to drawable-nodpi and will 
be resampled higher, such as 4x or 16x of the original dimensions for high def screens.

ここに画像の説明を入力してください

ダイアログのnodpiフォルダーまで必ずクリックしてください。プロジェクトビューでは、以前のようにすべての描画可能なフォルダーが個別に表示されないため、間違ったフォルダーに移動したことがすぐにはわかりません。Studioは、バニラの「ドローアブル」をかなり前に削除した後、ある時点で再作成しました。

ここに画像の説明を入力してください


3

これは私にとってうまくいきました:画像をdrawableフォルダーからdrawable-hdpiに移動するだけです。


これの説明は?なぜこの移動が機能するのですか?
Harun

plsはなぜこれが機能するのかを説明します...?
X-Black ...

3

Solutonをマニフェストファイルで試して、Glide Libraryを使用します

「com.github.bumptech.glide:glide:3.7.0」をコンパイルします

    **Use Glide Library and Override size to less size;**

 if (!TextUtils.isEmpty(message.getPicture())) {
            Glide.with(mContext).load(message.getPicture())
                    .thumbnail(0.5f)
                    .crossFade()
                    .transform(new CircleTransform(mContext))
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(holder.imgProfile);
        } 

android:hardwareAccelerated = "false"

android:largeHeap = "true"

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

このライブラリを使用

  compile 'com.github.bumptech.glide:glide:3.7.0'   

その実用的なハッピーコーディング

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;


public class CircleTransform extends BitmapTransformation {
    public CircleTransform(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        // TODO this could be acquired from the pool too
        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override
    public String getId() {
        return getClass().getName();
    }
}

3

これをアプリケーションの下のマニフェストに追加しますか?android:largeHeap = "true"


また、もう1つの解決策があります。高さ=高さ* .75および幅=幅* .75を変更します。
SAURABH OMER

2

私にも問題がありました。

上記の他のほとんどと同じです。問題は巨大な画像が原因です。

一部の画像のサイズを変更するだけで、コードを変更する必要はありません。



1

私はアンドロイド開発の初心者ですが、私のソリューションが役に立てば幸いです。私の状態で完全に動作します。Imageviewを使用して、背景を "src"に設定します。フレームアニメーションを作成しようとしているためです。同じエラーが発生しましたが、これをコーディングしようとするとうまくいきました

int ImageID = this.Resources.GetIdentifier(questionPlay[index].Image.ToLower(), "anim", PackageName);
            imgView.SetImageResource(ImageID);
            AnimationDrawable animation = (AnimationDrawable)imgView.Drawable;
            animation.Start();
            animation.Dispose();

1

新しいアクティビティに移るときに古いアクティビティを中止しないと、この問題に遭遇しました。私はそれを修正しましたfinish();

    Intent goToMain = new Intent(this,MainActivity.class);
    startActivity(goToMain);
    finish();

1
Bitmap image =((BitmapDrawable)imageView1.getDrawable()).getBitmap();

ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();

image.compress(Bitmap.CompressFormat.JPEG,50/100,byteArrayOutputStream);

50/100 100を使用する場合、元の解像度はメモリ不足のためにアプリを停止する可能性があります。

50または100未満の場合、これは50%または100未満の解像度になるため、メモリ不足の問題を回避できます


1

ドローアブルでオブジェクトのサイズを変更する必要があります。Androidを表示するには大きすぎます。たとえば、画像を設定している場合は、より少ないピクセルで画像を試してください。わたしにはできる。ありがとう。:)


1

画像サイズ(MBまたはKB)が大きすぎて、そのためのスペースを割り当てていないため、アプリがクラッシュしています。したがって、イメージをドローアブルに貼り付ける前に、サイズを小さくしてください。

または

Manifest.xmlでアプリケーションタグにフォローを追加できます

 android:hardwareAccelerated="false"
    android:largeHeap="true"
    android:allowBackup="true"

このアプリを追加した後、クラッシュしません。

  • アプリでは常に小さいサイズの画像を使用します。
  • appに大きなサイズの画像を追加する場合は、上記のsyntexを追加する必要がありますが、Appのサイズは増加します。

1

追加後に問題が解決しました

 dexOptions {
        incremental true
        javaMaxHeapSize "4g"
        preDexLibraries true
        dexInProcess = true
    }

Build.Gradleファイル内


これにより、アプリのメモリ使用量が
大幅に増加する

@ cricket_007その結果、もしあればどうなりますか?
Sreekanth Karumanaghat

1
Last but not the least....

Try Method One:

Simple Add these lines of code in the gradle file

dexOptions {
        incremental true
        javaMaxHeapSize "4g"
     }

Example:

android {
    compileSdkVersion XX
    buildToolsVersion "28.X.X"

    defaultConfig {
        applicationId "com.example.xxxxx"
        minSdkVersion 14
        targetSdkVersion 19
    }

dexOptions {
        incremental true
        javaMaxHeapSize "4g"
     }
}

*******************************************************************

Method Two:

Add these two lines of code in manifest file...

android:hardwareAccelerated="false" 
android:largeHeap="true"

Example:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:hardwareAccelerated="false"
        android:largeHeap="true"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

It will Work for sure any of these cases.....

0

画像をアップロードする場合は、ビットマップの2番目のパラメーターである画像品質を下げてみてください。これが私の場合の解決策でした。以前は90でしたが、次に60を試しました(以下のコードにあるように)。

Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
finalBitmap.compress(Bitmap.CompressFormat.JPEG,60,baos);
byte[] b = baos.toByteArray();

0

最も単純なものを試してください。画像サイズ(MB単位)が大きすぎるためにスペースが割り当てられていないため、アプリがクラッシュしている可能性があります。したがって、画像をドローアブルに貼り付ける前に、ビューアソフトウェアでサイズを小さくするか、実行時にギャラリーから画像を取得する場合は、保存する前にビットマップを圧縮してください。それは私のために働いた。間違いなくあなたのためになります。


0
stream = activity.getContentResolver().openInputStream(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;

bitmap = BitmapFactory.decodeStream(stream, null, options);
int Height = bitmap.getHeight();
int Width = bitmap.getWidth();
enter code here
int newHeight = 1000;
float scaleFactor = ((float) newHeight) / Height;
float newWidth = Width * scaleFactor;

float scaleWidth = scaleFactor;
float scaleHeight = scaleFactor;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
resizedBitmap= Bitmap.createBitmap(bitmap, 0, 0,Width, Height, matrix, true);
bitmap.recycle();

次に、Appliactionタグにlargeheapsize = "trueを追加します


0

この画像をアイコンとして使用したいと思います。Androidが言っているように、画像が大きすぎます。必要なのは、Androidが使用する画像のサイズと画面の解像度に応じたタイミングを認識できるように画像を拡大縮小することです。これを行うには、Android Studioで次のようにします。1. resフォルダーを右クリックし、2。画像アセットを選択します。3。アイコンタイプを選択します。4。アイコンに名前を付けます。5。アセットタイプで画像を選択します。6。画像をトリミングします。xmlまたはソースコードで、選択したアセットタイプに応じてレイアウトまたはミップマップフォルダーに配置される画像を参照してください。エラーはなくなります。


0

このようにマニフェストを編集することはお勧めしません

android:hardwareAccelerated = "false"、android:largeHeap = "true"

これらのオプションは、アプリのアニメーション効果を滑らかにしません。さらに、「liveData」またはローカルDB(Sqlite、Room)を変更すると、ゆっくりとアクティブになります。ユーザーエクスペリエンスに悪影響を及ぼします。

ビットマップのサイズ変更をお勧めします

以下はサンプルコードです

fun resizeBitmap(source: Bitmap): Bitmap {
      val maxResolution = 1000    //edit 'maxResolution' to fit your need
      val width = source.width
      val height = source.height
      var newWidth = width
      var newHeight = height
      val rate: Float

            if (width > height) {
                if (maxResolution < width) {
                    rate = maxResolution / width.toFloat()
                    newHeight = (height * rate).toInt()
                    newWidth = maxResolution
                }
            } else {
                if (maxResolution < height) {
                    rate = maxResolution / height.toFloat()
                    newWidth = (width * rate).toInt()
                    newHeight = maxResolution
                }
            }
            return Bitmap.createScaledBitmap(source, newWidth, newHeight, true)
 }


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.