Android 如何缩放大于4096像素的位图?

Android 如何缩放大于4096像素的位图?,android,matrix,bitmap,scale,fullscreen,Android,Matrix,Bitmap,Scale,Fullscreen,我有两个目标要实现 按比例缩放位图 缩放同一位图,使其高度等于设备的高度 尝试此操作时,我发现在像素较少的设备上,缩放效果良好,但在像素较多的设备上,缩放会迫使位图达到4096x4096像素限制: W/OpenGLRenderer(10630): Bitmap too large to be uploaded into a texture (4476x885, max=4096x4096) 现在,我正在使用Bitmap.createBitmap(位图源、int x、int y、int widt

我有两个目标要实现

  • 按比例缩放位图
  • 缩放同一位图,使其高度等于设备的高度 尝试此操作时,我发现在像素较少的设备上,缩放效果良好,但在像素较多的设备上,缩放会迫使位图达到4096x4096像素限制:

    W/OpenGLRenderer(10630): Bitmap too large to be uploaded into a texture (4476x885, max=4096x4096)
    
    现在,我正在使用Bitmap.createBitmap(位图源、int x、int y、int width、int height)缩放位图:

    float conversion = (float) view.getHeight() / (float) originalBitmap.getHeight();
    
    Matrix mat = new Matrix();
    mat.postScale(conversion,conversion);
    
    Bitmap resizedBitmap =
         Bitmap.createBitmap(originalBitmap,0,0,originalBitmap.getWidth(),
         originalBitmap.getHeight(), mat, false);
    imageView.setImageBitmap(resize);
    
    上述代码加上以下xml允许位图缩放整个屏幕:

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:scaleType="matrix"/>
    
    
    

    如果有任何其他方法可以按比例将位图缩放到整个屏幕,我将非常感谢这些建议

    使用
    Bitmap.createScaledBitmap(位图src、int-dstWidth、int-dstHeight、布尔过滤器)
    其中,dstWidth和dstHeight分别是所需的宽度和高度。(如图所示,如果为真,过滤器仅尝试平滑边缘,如果为假,则不尝试平滑边缘。)这不需要矩阵参数或所需位置,它只返回缩放位图

    以下内容可能适用于您:

    Bitmap resizedBitmap = 
         Bitmap.createScaledBitmap(originalBitmap, 
         originalBitmap.getWidth() * (view.getHeight() / originalBitmap.getHeight()),
         view.getHeight());
    imageView.setImageBitmap(resizedBitmap);
    
    您现在可能只需要这么多XML:

    <ImageView
         android:id="@+id/imageView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
    
    
    
    这是因为你不需要把占据整个父对象的东西放在中心,你也不再使用矩阵来缩放