当前位置:首页 » 安卓系统 » androidbitmap处理

androidbitmap处理

发布时间: 2025-03-16 01:42:08

Ⅰ android中Bitmap存为一张图片

可以用Bitmap.compress函数来把Bitmap对象保存成PNG或JPG文件,然后可以用BitmapFactory把文件中的数据读进来再生成Bitmap对象。
保存的代码大概类似于这样:
try {
FileOutputStream out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
具体的可以去查Bitmap和BitmapFactory的帮助文档。

Ⅱ android bitmap 图片缩放问题

在使用Bitmap进行位图读取和显示的时候需要注意在生成位图时,系统会根据不同的情况来缩小、放大图像。
当把图片放到drawable文件夹中时,160密度的模拟器显示的图像有放大效果,240密度的模拟器显示原尺寸的图像。
当把图片放到drawable-hdpi文件夹中时,160密度的模拟器显示出的图像有缩小效果,240密度的模拟器显示原尺寸的图像。
当把图片放到drawable-mdpi文件夹中时,160密度的模拟器显示原尺寸的图像,240密度的模拟器显示放大的图像。
当把图片放到drawable-ldpi文件夹中时,160、240密度的模拟器都显示放大的图片。
由此可以看出,在使用Bitmap显示图像时,一般应放在drawable-hdpi文件夹中,这样可以根据屏幕的密度来调整图像大小,比如再做游戏时,大屏幕的与小屏幕的手机中,人物或物体应该有大小之分。望求采纳谢谢...

Ⅲ android中surfaceview下如何高效旋转bitmap对象

在 Android 中,SurfaceView 是一个关键的组件,特别适合处理图像流,比如实时视频流或 OpenGL 场景。它的优势在于它拥有自己的 Surface,可以与宿主窗口分离,独立于应用窗口之外,因此在不同的线程中处理业务效率更高。SurfaceView 通过 UI 线程和渲染线程的“双缓冲”机制来实现高效的界面刷新效果,使得画面流畅。

为了更高效地处理图像流,我们引入了 GLSurfaceView。它继承自 SurfaceView,实现了 SurfaceHolder.Callback2 接口,拥有额外的 OpenGL 管理能力。GLSurfaceView 通过 OpenGL 在 GL 线程进行绘制,不阻塞主线程,并将结果输出到 SurfaceView 的 Surface 上。这样,GLSurfaceView 不仅拥有 SurfaceView 的所有特性,还具备 OpenGlES 的图形处理能力,通过渲染器接口支持用户自定义渲染器。

SurfaceTexture 是 SurfaceView 的扩展,它可以处理图像流数据的二次处理,如 Camera 滤镜或桌面特效。它将图像流转换为 GL 外部纹理,以便进行更精细的图像处理。与 SurfaceView 不同,SurfaceTexture 不会创建独立的窗口,而是将内容流作为纹理输出,从而实现 Live preview 功能。

TextureView 是 SurfaceView 的进一步扩展,它将内容流直接投射到普通的 View 中,允许进行 Live preview。TextureView 的特点是它可以作为 View hierarchy 的一部分,与其他 View 一样进行移动、旋转、缩放和动画。但需要注意的是,TextureView 必须在硬件加速的窗口中使用,内存消耗较大,并且有延迟。

总结来说,SurfaceView 直接输出,拥有独立 Surface,渲染可在单独线程中进行,但不能变形或做动画。SurfaceTexture 用于非直接输出的内容流,提供了二次处理的机会,但有延迟和内存消耗问题。TextureView 将内容流作为外部纹理输出,作为 View hierarchy 的一部分,内存消耗高,有延迟。

在 Android 7.0 之后,系统 SurfaceView 的性能可能优于 TextureView,特别是对于需要动画效果的场景。而 TextureView 在某些特定场景下,比如视频播放或相机应用,具有优势。选择合适的组件取决于具体应用需求。

更多关于 Android 的资源和文章,欢迎访问以下链接:

点击跳转->Unity 一路向东

点击跳转->有意思又酷的网站网址

点击跳转->精致神器软件推荐

点击跳转->精品书籍图谱

点击跳转->中国神话联盟宇宙

点击跳转->Android 指南

Ⅳ Android开发中ImageView里的Bitmap很模糊,怎么解决

背景和前景大小比列一定要一致,否则比列会把线条拉伸变得模糊

Ⅳ 在android开发中加载的图片太大,有好几十兆,应该怎么办

如果图片太大会造成OOM内存溢出的错误,需要用Bitmap的压缩机制。
解决方案:
1.使用BitmapFactory.decodeStream替代createBitmap方法
原因是该方法直读取图片字节,调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap。

2.使用压缩读取技术
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageSdUri, options);
final int height = options.outHeight;
final int width = options.outWidth;
options.inSampleSize = 1;
int w = 320;
int h = 480;
h = w*height/width;//计算出宽高等比率
int a = options.outWidth/ w;
int b = options.outHeight / h;
options.inSampleSize = Math.max(a, b);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);

3.及时释放Bitamp
Bitmap对象在不使用时,我们应该先调用recycle()释放内存,然后才它设置为null.虽然recycle()从源码上看,调用它应该能立即释放Bitmap的主要内存,但是测试结果显示它并没能立即释放内存。但是我它应该还是能大大的加速Bitmap的主要内存的释放。

Ⅵ android bitmap 浣跨敤镞跺欐敞镒忎粈涔

涓銆 闂棰樼殑鑳屾櫙鍜屾剰涔
鍦ˋndroid绉诲姩搴旂敤寮鍙戜腑锛屽笲itmap镄勪笉灏忓绩澶勭悊锛屽緢瀹规槗寮曡捣绋嫔簭鍐呭瓨绌洪棿钥楀敖钥屽艰嚧镄勭▼搴忓穿婧冮梾棰樸傛瘆濡傛垜浠甯搁亣鍒扮殑闂棰桡细
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
瀵艰嚧璇ラ梾棰樼殑鍑虹幇锛屼竴鑸鐢变互涓嫔嚑鏂归溃铡熷洜瀵艰嚧锛
寮曞姩璁惧囦竴鑸瀛桦偍绌洪棿闱炲父链夐檺銆傚綋铹朵笉钖岃惧囧垎閰岖粰搴旂敤镄勫唴瀛樼┖闂存槸涓嶅悓镄勚备絾鐩稿逛笉浣嗘彁楂樼殑璁惧囧垎杈ㄧ巼钥岃█锛屽唴瀛樼殑鍒嗛厤浠岖劧鏄鐩稿圭揣寮犵殑銆
Bitmap瀵硅薄甯稿父鍗犵敤澶ч噺镄勫唴瀛樼┖闂达纴姣斿傦细瀵逛簬2592*1936镄勮惧囷纴濡傛灉閲囩敤ARGB_8888镄勬牸寮忓姞杞藉浘镀忥纴鍐呭瓨鍗犵敤灏呜揪鍒19MB绌洪棿銆
鍦ˋnroid App涓缁忓父鐢ㄥ埌ListView锛孷iewPager绛夋带浠讹纴杩欎簺鎺т欢甯镐细鍖呭惈杈冨ぇ鏁伴噺镄勫浘鐗囱祫婧愩
浜屻 闂棰桦强鍦烘櫙鍒嗘瀽
1 楂樻晥鍦板姞杞藉ぇ锲剧墖銆
BitmapFactory绫绘彁渚涗简涓浜涘姞杞藉浘鐗囩殑鏂规硶锛歞ecodeByteArray(), decodeFile(), decodeResource(), 绛夌瓑銆
涓轰简阆垮厤鍗犵敤杈冨ぇ鍐呭瓨锛岀粡甯镐娇鐢˙itmapFactory.Options 绫伙纴璁剧疆inJustDecodeBounds灞炴т负true銆
//
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds =true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
涓轰简阆垮厤java.lang.OutOfMemory 镄勫纾甯革纴鎴戜滑鍦ㄧ湡姝decode锲剧墖涔嫔墠妫镆ュ畠镄勫昂瀵革纴闄ら潪浣犵‘瀹氲繖涓鏁版嵁婧愭彁渚涗简鍑嗙‘镞犺镄勫浘鐗囦笖涓崭细瀵艰嚧鍗犵敤杩囧氱殑鍐呭瓨銆
锷犺浇涓涓鎸夋瘆渚嬬缉灏忕殑鐗堟湰鍒板唴瀛树腑銆备緥濡傦纴濡傛灉鎶娄竴涓铡熷浘鏄1024*768 pixel镄勫浘鐗囨樉绀哄埌ImageView涓128*96 pixel镄勭缉鐣ュ浘灏辨病链夊繀瑕佹妸鏁村紶锲剧墖閮藉姞杞藉埌鍐呭瓨涓銆备负浜嗗憡璇夎В镰佸櫒铡诲姞杞戒竴涓杈冨皬镄勫浘鐗囧埌鍐呭瓨锛岄渶瑕佸湪浣犵殑BitmapFactory.Options 涓璁剧疆 inSampleSize 涓篓rue 銆备緥濡, 涓涓鍒呜鲸鐜囦负2048x1536 镄勫浘鐗囷纴濡傛灉璁剧疆inSampleSize 涓4锛岄偅涔堜细浜у嚭涓涓澶ф备负512x384镄勫浘鐗囥傚姞杞借繖寮犲皬镄勫浘鐗囦粎浠呬娇鐢ㄥぇ姒0.75MB锛屽傛灉鏄锷犺浇鍏ㄥ浘闾d箞澶ф傝佽姳璐12MB(锅囱绰itmap镄勯厤缃鏄疉RGB_8888).
2 涓嶈佸湪涓荤嚎绋嫔勭悊锲剧墖銆

浼楁墍锻ㄧ煡镄勯梾棰桡纴涓嶅啀璧樿堪銆
娉ㄦ剰涓ょ偣锛1. 涓轰简淇濊瘉浣跨敤镄勮祫婧愯兘琚锲炴敹锛屽缓璁浣跨敤WeakReference, 浠ュ簲鐢ㄥ唴瀛桦唴瀛樼揣寮犳椂锛屽洖鏀堕儴鍒呜祫婧愶纴淇濊瘉绋嫔簭杩涚▼涓嶈𨱒姝汇
2. 阆垮厤寮傛ヤ换锷$殑闀挎椂闂磋楁椂镎崭綔锛屽湪浠诲姟镓ц岀粨𨱒熷悗锛屽强镞堕喷鏀捐祫婧愩
3 绠$悊Bitmap鍐呭瓨銆
鍦ˋndroid寮鍙戜腑锛屽姞杞戒竴涓锲剧墖鍒扮晫闱㈠緢瀹规槗锛屼絾濡傛灉涓娆″姞杞藉ぇ閲忓浘鐗囧氨澶嶆潅澶氢简銆傚湪寰埚氭儏鍐典笅锛堟瘆濡傦细ListView,GridView鎴胧iewPager锛夛纴鑳藉熸粴锷ㄧ殑缁勪欢闇瑕佸姞杞界殑锲剧墖鍑犱箮鏄镞犻檺澶氱殑銆
链変簺缁勪欢镄刢hild view鍦ㄤ笉鏄剧ず镞朵细锲炴敹锛屽苟寰鐜浣跨敤锛屽傛灉娌℃湁浠讳綍瀵筨itmap镄勬寔涔呭紩鐢ㄧ殑璇濓纴鍨冨溇锲炴敹鍣ㄤ细閲婃斁浣犲姞杞界殑bitmap銆傝繖娌′粈涔堥梾棰桡纴浣嗗綋杩欎簺锲剧墖鍐嶆℃樉绀虹殑镞跺欙纴瑕佹兂阆垮厤閲嶅嶅勭悊杩欎簺锲剧墖锛屼粠钥岃揪鍒板姞杞芥祦鐣呯殑鏁堟灉锛屽氨瑕佷娇鐢ㄥ唴瀛樼紦瀛桦拰链鍦扮紦瀛树简锛岃繖浜涚紦瀛桦彲浠ヨ╀綘蹇阃熷姞杞藉勭悊杩囩殑锲剧墖銆
3.1 鍐呭瓨缂揿瓨
鍐呭瓨缂揿瓨浠ョ压鐗插唴瀛樼殑浠d环锛屽甫𨱒ュ揩阃熺殑锲剧墖璁块梾銆侺ruCache绫伙纸API Level 4涔嫔墠鍙浠ヤ娇鐢⊿upport Library锛夐潪甯搁傚悎锲剧墖缂揿瓨浠诲姟锛屽湪涓涓狶inkedHashMap涓淇濆瓨镌瀵笲itmap镄勫己寮旷敤锛屽綋缂揿瓨鏁伴噺瓒呰繃瀹瑰櫒瀹归噺镞讹纴鍒犻櫎链杩戞渶灏戜娇鐢ㄧ殑鎴愬憳锛圠RU锛夈
娉ㄦ剰锛氩湪杩囧幓锛岄潪甯告祦琛岀敤SoftReference鎴朩eakReference𨱒ュ疄鐜板浘鐗囩殑鍐呭瓨缂揿瓨锛屼絾鐜板湪涓嶅啀鎺ㄨ崘浣跨敤杩欎釜鏂规硶浜嗐傚洜涓轰粠Android 2.3 锛圆PI Level 9锛変箣钖庯纴鍨冨溇锲炴敹鍣ㄤ细镟寸Н鏋佺殑锲炴敹soft/weak镄勫紩鐢锛岃繖灏嗗艰嚧浣跨敤soft/weak寮旷敤镄勭紦瀛桦嚑涔庢病链夌紦瀛樻晥鏋溿傞‘甯︿竴鎻愶纴鍦ˋndroid3.0锛圆PI Level 11锛変互鍓嶏纴bitmap鏄鍌ㄥ瓨鍦╪ative 鍐呭瓨涓镄勶纴镓浠ョ郴缁熶互涓嶅彲棰勮佺殑鏂瑰纺𨱒ラ喷鏀绰itmap锛岃繖鍙鑳戒细瀵艰嚧鐭镞堕棿瓒呰繃鍐呭瓨闄愬埗浠庤岄犳垚宕╂簝銆 鏀惰捣

热点内容
管理员c语言 发布:2025-03-16 05:40:17 浏览:340
安卓软件上的图案如何更改 发布:2025-03-16 05:35:57 浏览:745
2010编译c中文乱码 发布:2025-03-16 05:33:40 浏览:548
干一杯密码箱酒多少钱一箱 发布:2025-03-16 05:31:15 浏览:356
我的零钱通密码是多少 发布:2025-03-16 05:04:36 浏览:937
编程猫酷跑 发布:2025-03-16 04:58:35 浏览:321
控制算法规律 发布:2025-03-16 04:54:17 浏览:965
tcl门锁原始设置密码是多少 发布:2025-03-16 04:52:37 浏览:992
如何给wifi加密码 发布:2025-03-16 04:52:05 浏览:367
linux的yes 发布:2025-03-16 04:38:20 浏览:836