2017-03-25 12 views
0

私のアプリでは、ギャラリーから画像を選択する必要があります。たとえば、インターネットからダウンロードした単純なイメージを選んだ場合、正常に動作します。私は写真を自分の携帯電話上で行わ選ぶなら、私は写真を読み込むためにグライドを使用しW/OpenGLRenderer: Bitmap too large to be uploaded into a texture (4160x3120, max=4096x4096)ギャラリーから選択した画像のスケーリングまたは比例リサイズ

を得る。これは、画像をピックアップし、それからビットマップを作成し、私のコードでこの

Caused by: java.lang.IllegalArgumentException: Unknown type class android.graphics.Bitmap. You must provide a Model of a type for which there is a registered ModelLoader, if you are using a custom model, you must first call Glide#register with a ModelLoaderFactory for your custom model class 

を与えます。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // When an Image is picked 
    if (requestCode == SELECT_PHOTO && resultCode == RESULT_OK 
      && null != data) { 

     Uri imageUri = data.getData(); 
     InputStream inputStream; 
     try { 
      inputStream = getContentResolver().openInputStream(imageUri); 
      Bitmap image = BitmapFactory.decodeStream(inputStream); 
      commentImage = (ImageView) findViewById(R.id.comment_image); 
      //Glide.with(this).load(image).asBitmap().override(4095, 4095).into(commentImage); 
      commentImage.setImageBitmap(image); 
      //commentImage.setImageBitmap(Bitmap.createScaledBitmap(image, 4095, 2048, false)); 
      Toast.makeText(this, "SUCCESS", Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      // show a message to the user indictating that the image is unavailable. 
      Toast.makeText(this, "Unable to open image", Toast.LENGTH_LONG).show(); 
     } 

    } else { 
     Toast.makeText(this, "You haven't picked Image", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

イメージが大きすぎる場合は、どのようにイメージを拡大縮小できますか?

答えて

0

ビットマップを圧縮するには、次のコードを使用します。ここで、bitmapImageはビットマップオブジェクトです。 :

生憎
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     bitmapImage.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream); //90 refers to 90% quality, or 10% compression 
     byte[] data = byteArrayOutputStream.toByteArray(); 

Bitmap compressedBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
+0

、それはまだ 'W/OpenGLRenderer言う:TheAlcatras21 @テクスチャにアップロードするには大きすぎるビットマップ(4160x3120、最大= 4096×4096)' – TheAlcatras21

+0

:画像は本当に大きないるように見える、ので試してみましょう品質は80(20%圧縮)です。エラーが示すように、圧縮後、解決は4160x3120であり、可能な最大は4096x4096です。 –

関連する問題