展开

关键词

获取View的截图-将View转换为Bitmap

开发中,有时候需要获取View的截图来做动画来达到动画流程的目的原理:将View的内容画到一个Bitmap画布上,然后取出下面封装了一个从View生成Bitmap的工具类** * 将View转换为Bitmap *public class ViewToBitmapUtil { private static final String TAG = ViewToBitmapUtil; public static bitmap = view.getDrawingCache();     或者可以使用下面的方法      view.setDrawingCacheEnabled(true);      Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache());     return bitmap; } public static Bitmap convertViewToBitmap (View view, int bitmapWidth, int bitmapHeight) { Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight

51690

Android中将Bitmap以PNG格式保存在内部存储中的方法

在Android中进行图像处理的任务时,有时我们希望将处理后的结果以图像文件的格式保存在内部存储空间中,本文以此为目的,介绍将Bitmap的数据以PNG格式保存下来的方法。 1、添加权限由于是SD card进行操作,必不可少的就是为你的程序添加读写权限,需要添加的内容如下:

22910
  • 广告
    关闭

    云加社区有奖调研

    参与社区用户调研,赢腾讯定制礼

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android使用技巧:将当前摄像头预览图像保存为Bitmap & 保存到本地

    前言今天,carson将结合示例讲解:如何将当前摄像头预览图像保存为Bitmap & 保存到本地----1. 背景正开启摄像头预览----2. 需求将当前摄像头预览的图像保存为Bitmap & 保存到手机本地文件夹----3. 创建YUV YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null); if (image 存为BitMap ByteArrayOutputStream stream = new ByteArrayOutputStream(); image.compressToJpeg(new Rect( 0, 0, size.width, size.height), 80, stream); Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray

    41310

    OpenCV | 基于Android系统详析Mat与Bitmap(创建、初始化、使用与转换 | 附大量demo)

    Mat Mat是OpenCV中用来存储图像信息的内存;当通过Imgcodecs.imread()方法从文件读入一个图像文件时,imread方法就会返回Mat实例;或者通过Utils.bitmatToMat ()方法由Bitmap转换得到Mat实例。 Android中的Bitmap其实Android系统中有一个与Mat相似的Bitmap。 ----2.1 图像文件与资源加载在Android系统中, 可以把给定图像的文件路径或者图像资源ID作为参数, 通过调用API来实现文件加载,使目标图片成为一个Bitmap实例。 为了避免OOM问题,首先应该获取图像的大小,然后根据图像大小进行适当的降采样,之后再加载为Bitmap:private void displaySelectedImage() { if(fileUri

    2.5K63

    Bitmap的内存优化

    Bitmap类的构造方法都是私有的,所以开发者不能直接new出一个Bitmap,只能通过BitmapFactory类的各种静态方法来实例化一个Bitmap。 这个Bitmap是由Java部分分配的,不用的时候系统就会自动回收了,但是那个应的C可用的内存区域,虚拟机是不能直接回收的,这个只能调用底层的功能释放。 3) 缓存通用的Bitmap 有时候,可能需要在一个Activity里多次用到同一张图片。 如果有类似上面的场景,就可以同一Bitmap进行缓存。如果不进行缓存,尽管看到的是同一张图片文件,但是使用BitmapFactory类的方法来实例化出来的Bitmap,是不同的Bitmap。 否则获取的bitmap还是null。

    54050

    View绘制系列(14)-Paint混合模式

    PorterDuffXfermode是最常用的混合模式。 ,在这里明显不适用使用Bitmap构造Canvas,相当于Bitmap进行绘制这里我们使用Bitmap的方式获取画布,并在该画布上进行XferMode的混合工作,完成后将Bitmap使用canvas.drawBitmap ,即DST Bitmap Bitmap dstBitmap = makeDst(getWidth()2,getWidth()2); 获取采用混合模式绘制的Bitmap,即SRC bitmap Bitmap srcBitmap = makeSrc(getWidth(),getWidth()2); 使用Bitmap方式获取画布,创建一个和View大小相同的Bitmap Bitmap bitmap = createBitamp = new Paint(); 使用Bitmap的画布绘制DST bitmap resultCanvas.drawBitmap(dstBitmap, 0, 0, xfermodePaint); 依次修改这里的

    24310

    Android JNI 之 Bitmap 操作

    检索 Bitmap 信息 AndroidBitmap_getInfo 函数允许原生代码检索 Bitmap 信息,如它的大小、像素格式等,函数签名如下:** * Given a java bitmap native Bitmap rotateBitmap(Bitmap bitmap); 传入一个 Bitmap ,然后返回一个 Bitmap 。 要将 Bitmap 进行旋转,可以通过直接更改 bitmapPixels 指针指向的像素点的值,也可以通过创建一个新的 Bitmap ,然后将像素值填充到 Bitmap 中,这里选择后者的实现方式 Config config)` 所以在 JNI 中就需要调用 Bitmap 的静态方法来创建一个 Bitmap 。 就这样通过读取原有 Bitmap 的像素内容然后进行操作后再赋值给新的 Bitmap 就完成了 JNI 操作 Bitmap

    1.1K40

    带你了解Android常见的内存缓存算法

    把最不常用的缓存换走。(3)、First in First out(FIFO)这是一个低负载的算法,并且缓存的管理要求不高。 通过一个队列去跟踪所有的缓存,最近最常用的缓存放在后面,而更早的缓存放在前面,当缓存容量满时,排在前面的缓存会被踢走,然后把新的缓存加进去。 (4)、Simple time-based通过绝的时间周期去失效那些缓存于新增的,保存特定的时间。 ()即可从父类中 访问我们保存的Bitmap的?

    38410

    图片的缩放

    界面布局,线性布局,竖直排列,两个ImageView获取到两个ImageView调用BitmapFactory.decodeResource(res,id)方法,获取Bitmap参数:res是getResource (),id是资源id比如:R.drawable.xxx调用ImageView的setImageViewBitmap(),参数:Bitmap获取可编辑的Bitmap调用Bitmap的createBitmap (width,height,config)方法,获得可编辑的Bitmap参数:宽 高 配置,这些都是原来的宽高,Bitmap的getWidth(),getHeight(),getConfig() 获取Canvas,通过new Canvas(bitmap),参数:Bitmap调用Canvas的drawBitmap(bitmap,matrix,paint)方法,参数:Bitmap模板 ,matrix是矩阵,Paint是画笔获取Paint,通过new出来调用Paint的setColor()方法,设置画笔颜色,参数:Color.BLACK获取Matrix,通过new出来调用Matrix

    17120

    1-MI-Android多媒体之Bitmap

    零、前言 .Bitmap是关于图的类,也就是位图 .生成Bitmap的方式 .BitmapFactory.Options .模糊处理 .给一个Bitmap添加倒影 .将一个View转换成Bitmap .保存bitmap ----一、生成Bitmap的方式1.从文件获取(运行时权限自己处理)通过文件绝路径加载图片Bitmap bitmap = BitmapFactory.decodeFile( false 默认值:false 虚拟机直接卡死.... true时图片不显示 可以获取信息 BitmapFactory.Options o = new BitmapFactory.Options();获取 o.inJustDecodeBounds = true;只获取信息,不分配内存通过文件绝路径加载图片String pathName = sdcardDCIMCameraiv_500x400.bmp;Bitmap 压缩图片BitmapFactory.Options o = new BitmapFactory.Options();实例化一个o.inJustDecodeBounds = true;通过文件绝路径加载图片

    17410

    1-MI-Android多媒体之Bitmap

    零、前言 1.Bitmap是关于图的类,也就是位图 2.生成Bitmap的方式 3.BitmapFactory.Options 4.模糊处理 5.给一个Bitmap添加倒影 6.将一个View转换成 Bitmap 7.保存bitmap --- 一、生成Bitmap的方式 1.从文件获取(运行时权限自己处理) 通过文件绝路径加载图片Bitmap bitmap = BitmapFactory.decodeFile false 默认值:false 虚拟机直接卡死.... true时图片不显示 可以获取信息 BitmapFactory.Options o = new BitmapFactory.Options();获取 o.inJustDecodeBounds = true;只获取信息,不分配内存通过文件绝路径加载图片String pathName = sdcardDCIMCameraiv_500x400.bmp;Bitmap 压缩图片 BitmapFactory.Options o = new BitmapFactory.Options();实例化一个o.inJustDecodeBounds = true;通过文件绝路径加载图片

    16600

    Android--SoftReference缓存图片

    Java中的SoftReference即的软引用。如果一个具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些的内存。 另外,一旦垃圾线程回收该Java之后,get()方法将返回null用Map集合缓存软引用的BitmapMap imageCache = new new HashMap();强引用的Bitmap Bitmap bitmap = BitmapFactory.decodeStream(InputStream);软引用的BitmapSoftReference bitmapcache = new SoftReference (bitmap);添加该到Map中使其缓存imageCache.put(1,softRbitmap);...从缓存中取软引用的BitmapSoftReference bitmapcache_ = imageCache.get(1);取出Bitmap,如果由于内存不足Bitmap被回收,将取得空Bitmap bitmap_ = bitmapcache_.get();如果程序中需要从网上加载大量的图片

    22020

    android UiAutomator基本api的二次封装

    bitmap = BitmapFactory.decodeFile(oldPath);创建并实例化bitmap FileOutputStream out = new FileOutputStream String path = screenShot(test);截图 Bitmap bitmap = BitmapFactory.decodeFile(path);创建并实例化bitmap bitmap bitmap = BitmapFactory.decodeFile(path);新建并实例化bitmap int color = bitmap.getPixel(x, y);获取坐标点像素颜色 output bitmap = BitmapFactory.decodeFile(path);新建并实例化bitmap Rect rect = uiObject.getVisibleBounds(); int limit) { Bitmap bitmap1 = BitmapFactory.decodeFile(path1);创建并初始化bitmap Bitmap bitmap2 = BitmapFactory.decodeFile

    27410

    高频面试点:Android性能优化之内存优化(下篇)

    池:显示创建池,实现复用逻辑,相同的类型数据使用同一块内存空间。 Bitmap的复用:使用inBitmap属性可以告知Bitmap解码器尝试使用已经存在的内存区域,新解码的bitmap会尝试使用之前那张bitmap在heap中占据的pixel data内存区域。 HashMap 工具类会相比较 低效,因为它 需要为每一个键值都提供一个入口,而 SparseArray 就 避免 掉了 基本数据类型转换成数据类型的时间。 在应用中,如果有一些图片的访问频率要比其它的大一些,或者必须一直显示出来,就需要一直保持在内存中,这种情况可以使用多个LruCache来管理多组BitmapBitmap进行分级,不同级别的Bitmap 时,首先检查是否有可复用的bitmap:public static Bitmap decodeSampledBitmapFromStream(InputStream is, BitmapFactory.Options

    16330

    Drawable.Bitmap.Canvas.Paint.Matrix

    由于Drawable、Bitmap、Canvas、Paint和 Matrix 的关系和使用 一直不太清楚,就在网上搜集了一下,摘录一些,主要来看这两篇文章:Drawable、Bitmap、Canvas Bitmap – 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888、ARGB8888。作为一种像素的显示 执行效率高,但是存储效率低的缺点也很明显。 就理解为一种bmp格式图像存储。 Drawable – 作为Android下通用的绘制图形,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化,比如渐变、图形等。 (); int h = bitmap.getHeight(); 创建操作图片用的Matrix Matrix matrix = new Matrix(); 计算缩放比例 float sx= ((float

    61560

    Android开发笔记(三十三)文本文件和图片文件的读写

    写文件时,先把File文件转为FileOutputStream,然后调用该的write方法写入文件。 保存图片文件时,调用Bitmap的compress方法,指定图片类型、压缩质量,以及图片的BufferedOutputStream,然后调用BufferedOutputStream的flush方法完成写入 打开图片文件时,使用BitmapFactory的decodeStream方法,从BufferedInputStream中读取Bitmap图片信息。 下面是读写图片文件的代码片段: private void saveBitmap(String path, Bitmap bitmap) { try { BufferedOutputStream bos openBitmap(String path) { Bitmap bitmap = null; try { BufferedInputStream bis = new BufferedInputStream

    64450

    Android OOM分析

    减小Bitmap的内存占用Bitmap是一个极容易消耗内存的大胖子,减小创建处理的Bitmap的内存占用是很重要的,通常来说有下面2个措施: inSampleSize:缩放比例,在把图片载入内存之前 内存的重复利用大多数的复用,最终实施的方案都是利用池技术,要么是在编写代码的时候显示的在程序里面去创建池,然后处理好复用的实现逻辑,要么就是利用系统框架既有的某些复用特性达到减少的重复创建 Bitmap的复用在RecyclerView、ListView、GridView等显示大量图片的控件里面需要使用LRU机制来缓存处理好的Bitmap。 我们可以创建一个包含多种典型可重用bitmap池,这样后续的bitmap创建都能找到合适的”模板“去进行重用。 ?4. 注意临时Bitmap的及时回收临时创建的某个相比较大的bitmap,在经过转换得到新的bitmap之后,应该尽快回收原始的bitmap,这样能够更快释放原始bitmap所占用的空间。

    1.2K30

    039android初级篇之获取已安装应用的图标签名等信息并保存

    于已安装的应用我们可以使用PackageManager获取其图标 程序版本 版本名称 应用名 程序的权限 程序的签名等等。 的Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。 作为一种逐像素的显示执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储比较好。 Drawable - 作为Android平台下通用的图形,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化,比如渐变、图形等。 ; } if(oLen < len){ Log.e(TAG,ERROR:oLen < len); return bitmap; } Bitmap mm = Bitmap.createBitmap(bitmap

    46330

    OpenCV专题1 - AndroidStudio的JNI工程及引用OpenCV

    转矩阵 * @param env JNI环境 * @param bitmap Bitmap * @param mat 图片矩阵 * @param needPremultiplyAlpha 是否前乘透明度 Bitmap * @param env JNI环境 * @param mat 图片矩阵 * @param bitmap Bitmap * @param needPremultiplyAlpha 是否前乘透明度 Bitmap * @param env JNI环境 * @param src 矩阵 * @param config Bitmap配置 * @return Bitmap *jobject createBitmap );} ----4.4:C++文件中的处理 将图片的像素信息灰度化盛放在dstMat,再使用dstMat创建一个Bitmap,至此一个逻辑就通畅了 ---->---#include #include , CV_BGR2GRAY);将图片的像素信息灰度化盛放在dstMat return createBitmap(env,dstMat,argb8888);使用dstMat创建一个Bitmap} 至此

    24030

    自定义Drawable实现圆角图片和圆形图片

    ,初始化一个BitmapShader,将其传递给我们的画笔 public RoundImageDrawable(Bitmap bitmap) {mBitmap = bitmap; BitmapShader , right, bottom);rectF = new RectF(left, top, right, bottom);} d 在draw()方法里面调用  canvas.draw()传入我们的矩形和画笔 mBitmap; private RectF rectF; public RoundImageDrawable(Bitmap bitmap) { mBitmap = bitmap; BitmapShader ,初始化一个BitmapShader,将其传递给我们的画笔 public CircleImageDrawable(Bitmap bitmap) { mBitmap = bitmap; BitmapShader mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight()); }c 在Draw()方法里面调用   canvas.draw()传入我们的矩形和画笔

    44720

    扫码关注云+社区

    领取腾讯云代金券