【问题标题】:Loading bitmap with too large height in android ImageView在android ImageView中加载高度太大的位图
【发布时间】:2019-08-25 20:40:17
【问题描述】:

我遇到了一个奇怪的位图问题,我在我的应用程序中本地保存了一些高度太大的图像,我在支持缩放和平移的imageview 中显示图像。我正在做的是使用通用图像加载器获取图像的位图,然后将该位图加载到imageview 中。现在,如果我在不使用缩放图像的情况下显示位图:

DisplayImageOptions opts = new 
DisplayImageOptions.Builder().imageScaleType(ImageScaleType.NONE).build();
bitmap = ImageLoader.getInstance().loadImageSync(uri.toString(), opts);

然后imageview 中没有显示任何内容,但我在logcat 中收到错误:

W/OpenGLRenderer:位图太大,无法上传到纹理中 (686x7628,最大值=4096x4096)

如果我尝试通过缩放加载图像,则图像质量会被破坏,因为图像仅包含文本,它不可读。

设备截图:

原图:

图像大小为 1.2Mb,只是我不知道如何处理这个问题,因为我尝试将图像质量降低到不可读的格式的所有库,如果我尝试将图像位图直接加载到 imageview 它是不显示。任何帮助表示赞赏。

【问题讨论】:

  • 这是相当大的图像,以像素为单位。尝试加载一次 HttpUrlConnection 并修改 ImageViewSee this 。还有一些库可用于加载高分辨率位图。您也可以使用WebView 加载此图像。
  • WebView 的好处是它会自动缓存它。它提供自动滚动。
  • @ADM 我正在​​使用支持缩放和平移的imageview ,使用webview 我认为用户体验会很差

标签: android picasso android-glide android-bitmap universal-image-loader


【解决方案1】:

好吧,我认为图像加载库无法帮助您处理此类图像。库应将原始图像缩放为小于最大纹理大小的大小。因此,这些长图像被大幅缩放,导致不可读的文本。在您的情况下,您应该自己处理图像加载:获取图像并将其绘制在画布上,可能是按部分或以某种方式绘制。

无论如何,将文本加载为这些大小的图像看起来不是一个好主意:)

【讨论】:

  • 感谢您的回复。您能否分享一些想法或任何有用的链接如何获取图像并将其绘制在画布上。我试过了,但直到今天都没有成功。
【解决方案2】:

您可以获得设备支持的最大尺寸

 val canvas = Canvas()
    canvas.getMaximumBitmapHeight()
    canvas.getMaximumBitmapWidth()

根据文档

身高

/**
 * Returns the maximum allowed height for bitmaps drawn with this canvas.
 * Attempting to draw with a bitmap taller than this value will result
 * in an error.
 *
 * @see #getMaximumBitmapWidth()
 */
public int getMaximumBitmapHeight() {
    return MAXMIMUM_BITMAP_SIZE;
}

宽度

 /**
 * Returns the maximum allowed width for bitmaps drawn with this canvas.
 * Attempting to draw with a bitmap wider than this value will result
 * in an error.
 *
 * @see #getMaximumBitmapHeight()
 */
public int getMaximumBitmapWidth() {
    return MAXMIMUM_BITMAP_SIZE;
}

因此,在设置Bitmap 时,您应该考虑这些尺寸并相应地设置位图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2015-07-22
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多