Bitmap too large to be uploaded into a texture,Hardware accelerated

原文链接:http://www.csdn123.com/itweb.php?url=aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9nZnFGaWdodGluZy9hcmNoaXZlLzIwMTMvMDkvMTcvMzMyNjM2My5odG1s


Android的硬件加速及可能导致的问题


问题

在Android 4.0的某些设备上,在View刷新时会出现花屏和屏幕上的某些View错位的现象。 经过调查后发现adb logcat中出现很多OpenGLRenderer: 0x501的错位:

1
2
3
09-18 14:34:39.090: DEBUG/OpenGLRenderer(3104): GL error from OpenGLRenderer: 0x501
09-18 14:34:39.386: DEBUG/OpenGLRenderer(3104): GL error from OpenGLRenderer: 0x501
09-18 14:34:39.656: DEBUG/OpenGLRenderer(3104): GL error from OpenGLRenderer: 0x501

从这个日志,初步怀疑是硬件加速导致的问题。 经过分析发现使用了比较复杂的自定义View,可能会导致硬件加速渲染出错。

硬件加速的优点与缺点

硬件加速能使用GPU来加速2D图像的渲染速度,但是硬件加速并不能完全支持所有的渲染操作, 针对自定义的View,硬件加速可能导致渲染出现错误。 如果有自定义的View,需要在硬件加速的设备上进行测试,如果出现渲染的问题,需要关闭硬件加速。

开启和关闭硬件加速

对硬件加速的开关可以在不同的级别进行控制:

  • Application
  • Activity
  • Windows
  • View

Application级别

在Applciation级别控制硬件加速的开关:

1
<application android:hardwareAccelerated="true" ...>

Activity级别

可以对单个的Activity控制是否启用硬件加速:

1
2
3
4
<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

Window级别

1
2
3
getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

View级别

在指定的View上关闭硬件加速:

1
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

或者使用android:layerType="software"来关闭硬件加速:

1
2
3
4
5
6
7
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingLeft="2dp"
    android:layerType="software"
    android:paddingRight="2dp" >

如何判断一个View是否启用了硬件加速

  • View.isHardwareAccelerated() returns true if the View is attached to a hardware accelerated window.
  • Canvas.isHardwareAccelerated() returns true if the Canvas is hardware accelerated

参考


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个异常通常是由于插入的图片格式不被Excel支持而引起的。在Excel中,只支持插入BMP、JPG、PNG、GIF等格式的图片,如果插入的图片格式不是这些格式,就会出现这个异常。 如果出现这个异常,你可以尝试使用Pillow库将图片转换为BMP、JPG、PNG、GIF等格式,然后再插入到Excel中。 下面是一个将图片转换为BMP格式并插入到Excel中的示例代码: ```python import xlwt import os from PIL import Image # 创建一个Workbook对象,用于保存Excel文件 workbook = xlwt.Workbook() # 创建一个Worksheet对象,用于保存Excel文件中的一个工作表 worksheet = workbook.add_sheet('Sheet1') # 打开图片文件 image_file = 'example.jpg' with Image.open(image_file) as img: # 将图片转换为BMP格式 bmp_file = 'example.bmp' img.convert('RGB').save(bmp_file) # 将BMP图片插入到Excel中 worksheet.insert_bitmap(bmp_file, 0, 0) # 保存Excel文件 workbook.save('example.xls') # 删除临时生成的BMP图片文件 os.remove(bmp_file) ``` 在代码中,我们首先使用Pillow库打开图片文件,然后将图片转换为BMP格式,并将BMP图片插入到Excel中。最后,保存Excel文件并删除临时生成的BMP图片文件。 如果你想要插入JPG、PNG、GIF等格式的图片,只需要将图片转换为对应的格式即可。例如,将图片转换为JPG格式的代码如下: ```python img.convert('RGB').save(jpg_file, 'JPEG') ``` 这里的`jpg_file`是你要保存的JPG文件名。保存JPG文件时,需要指定`format`参数为`JPEG`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值