精华内容
下载资源
问答
  • Bitmap

    千次阅读 2015-10-21 13:29:04
    Bitmap是Android系统中的图像处理的最重要类之一。 用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作, 并可以指定格式保存图像文件。本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能。 一、Bitmap...

    Bitmap是Android系统中的图像处理的最重要类之一。
    用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,
    并可以指定格式保存图像文件。本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能。






    一、Bitmap的生成
       
       1.1 BitmapFactory decode出Bitmap
              Bitmap实现在android.graphics包中。
         但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。
        这必然是 某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,
        这个类就是BitmapFactory。
        利用BitmapFactory可以从一个指定文件中,利用decodeFile()解出Bitmap;
        也可以定义的图片资源中,利用decodeResource()解出Bitmap。
        
       1.2 decode时的选项
         在使用方法decodeFile()/decodeResource()时,都可以指定一个BitmapFacotry.Options。
         利用Options的下列属性,可以指定decode的选项:
      inPreferredConfig 指定decode到内存中,手机中所采用的编码,可选值定义在Bitmap.Config中。缺省值是ARGB_8888。
      inJustDecodeBounds 如果设置为true,并不会把图像的数据完全解码,亦即decodeXyz()返回值为null,但是Options的outAbc中解出了图像的基本信息。
      inSampleSize 设置decode时的缩放比例。
         利用Options的这些值就可以高效的得到一幅缩略图。
         先设置inJustDecodeBounds= true,调用decodeFile()得到图像的基本信息[Step#2~4];
         利用图像的宽度(或者高度,或综合)以及目标的宽度,得到inSampleSize值,再设置inJustDecodeBounds= false,
         调用decodeFile()得到完整的图像数据[Step#5~8]。
         先获取比例,再读入数据,如果欲读入大比例缩小的图,将显著的节约内容资源。有时候还会读入大量的缩略图,这效果就更明显了。


    二、利用Bitmap和Matrix实现图像变换


        Bitmap可以和Matrix结合实现图像的剪切、旋转、缩放等操作。
             用源Bitmap通过变换生成新的Bitmap的方法:
        public static Bitmap createBitmap(Bitmap source, int x, int y, intwidth, int height, Matrix m, boolean filter) 
        public static Bitmap createBitmap(Bitmap source, int x, int y, intwidth, int height) 
        public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight,boolean filter)
              第一个方法是最终的实现,后两种只是对第一种方法的封装。
              第二个方法可以从源Bitmap中指定区域(x,y, width, height)中挖出一块来实现剪切;
              第三个方法可以把源Bitmap缩放为dstWidth x dstHeight的Bitmap。
              设置Matrix的Rotate(通过setRotate())或者Scale(通过setScale()),传入第一个方法,可实现旋转或缩放。


    三、保存图像文件


        经过图像变换之后的Bitmap里的数据可以保存到图像压缩文件里(JPG/PNG)。
        这个操作过程中,Bitmap.compress()方法的参数format可设置JPEG或PNG格式;quality可选择压缩质量;fOut是输出流(OutputStream),这里的FileOutputStream是OutputStream的一个子类。
       总结一下,本文介绍Bitmap的使用方法——用Bitmap实现图像文件的读取和写入,并用Bitmap实现图像的剪切、旋转和缩放变换。        
                
                
































     

    展开全文
  • bitmap

    千次阅读 2013-11-03 10:38:02
    bitmap实现对raid -1 的优化 环境: RHEL5.3,磁盘阵列raid-1(可以建立在不同磁盘或分区上,在本实验中我们使用sdb和sdd) 原理描述: 在mdadm操作中,bitmap用于记录RAID 阵列从上次同步之后更改的部分,...

    用bitmap实现对raid -1 的优化

    环境:
    RHEL5.3,磁盘阵列raid-1(可以建立在不同磁盘或分区上,在本实验中我们使用sdb和sdd)

    原理描述:
    在mdadm操作中,bitmap用于记录RAID 阵列从上次同步之后更改的部分,即记录RAID阵列有多少个块已经同步(resync)。RAID 阵列会定期将信息写入到bitmap 中。在一般情况下,磁盘阵列在重启之后会有一个完整的同步过程。如果有bitmap,那么只有被修改后的数据才会被同步。在另一种情况下,如果阵列一块磁盘被取出,bitmap不会被清除,当这块磁盘重新加入阵列时,同样只会同步改变过的数据。所以bitmap能够减少磁盘阵列同步的时间,起到优化raid1的作用。Bitmap一般写入的位置是磁盘的metadata或者我们成为外部的另外,要注意的是,bitmap只是对raid1的功能,对raid0等其他设备来说是没有意义的。

    Bitmap的使用:
    Bitmap一般写入磁盘的metadata中,也可以写入文件系统的某个目录下。由参数—bitmap后面的参数来决定,internal表示写入metadata,也可指定目录.

    1)  在建立时使用
    [root@localhost ~]# mdadm -C /dev/md0 -l1 -n2 /dev/sd[bd]1 --bitmap=internal
    mdadm: array /dev/md0 started.
    [root@localhost ~]# cat /proc/mdstat
    Personalities : [raid1]
    md3 : active raid1 sdb1[1] sdd1 [0]
    503872 blocks [2/2] [UU]
    bitmap: 62/62 pages [248KB], 4KB chunk
        unused devices:

    2)  在建完raid1之后使用
    开启bitmap
    [root@localhost ~]# mdadm /dev/md0 --grow --bitmap=internal
    关闭bitmap:
    [root@localhost ~]# mdadm /dev/md0 --grow --bitmap=none

    3)  保存在文件中举例
        [root@localhost ~]# mdadm -C /dev/md0 -l1 -n2 /dev/sd[bd]1 --bitmap=/tmp/bitmap

    4)  另外,可以使用—examine-bitmap或者-X来查看存储在文件或者设备元数据中的 bitmap记录的信息,当存储在元数据区时,参数是/dev/sdx,当参数是文件时,要注意的是使用bitmap文件记录要求这个文件不能在RAID阵列上或者其相关的设备上,而且使用assemble命令时要指定bitmap文件名字。另外,--bitmap-chunk表示每个bit位代表RAID设备多大的数据块,单位是KB;而--delay(或者其缩写-d)指定多长事件同步bitmap信息到文件或者设备上,单位是秒,默认是5秒。--force(或者其缩写)表示覆盖掉已经存在bitmap文件。
    [root@localhost ~]# mdadm –X /dev/sdb1
    或者[root@localhost ~]# mdadm –X /tmp/aaa(文件名)
    unused devices:
    Filename : /dev/sdb1         
    Magic : 6d746962         
    Version : 4            
    UUID : bcccddb7:0f529abd:672e1f66:7e68bbc8         
    Events : 6
    Events Cleared :6         
    State : OK      
    Chunksize : 4 KB         
    Daemon : 5s flush period      
    Write Mode : Normal      
    Sync Size : 2096384 (2047.59 MiB 2146.70 MB)         
    Bitmap : 125968 bits (chunks), 0 dirty (0.0%)

    5) bitmap模式在阵列处于降级(degrade)状态能够记录有哪些块被写过,当那个暂时失效的磁盘使用--re-add参数被重新添加后,阵列只重构这期间修改的数据块,减少阵列重构的时间。bitmap信息中dirty的数量表示降级期间被修改过的块。
    #mdadm /dev/md0 -f /dev/sdb /dev/sd
    #cat /proc/mdstat
    #mdadm -X /tmp/md0-bm
    #mdadm dd if=/dev/zero of=/dev/md0 bs=1M count=1024
    #mdadm -X /tmp/md0-bm
    #mdadm /dev/md0 -r /dev/sdb --re-add /dev/sdb
    #cat /proc/mdstat
    #mdadm -X /tmp/md0-bm


    展开全文
  • file转bitmap File param = new File(); Bitmap bitmap= BitmapFactory.decodeFile(param.getPath()); drawable转bitmap Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.mipmap.jcss_03 .....

    file转bitmap

    File param = new File();

     

    Bitmap bitmap= BitmapFactory.decodeFile(param.getPath());

    drawable转bitmap

     

    Bitmap    bmp = BitmapFactory.decodeResource(getResources(),R.mipmap.jcss_03 );

    url转bitmap

     

    Bitmap bitmap;
    public Bitmap returnBitMap(final String url){
    
        new Thread(new Runnable() {
            @Override
            public void run() {
                URL imageurl = null;
    
                try {
                    imageurl = new URL(url);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                try {
                    HttpURLConnection conn = (HttpURLConnection)imageurl.openConnection();
                    conn.setDoInput(true);
                    conn.connect();
                    InputStream is = conn.getInputStream();
                    bitmap = BitmapFactory.decodeStream(is);
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    
        return bitmap;
    }

     

    方法二:

    public Bitmap getBitmap(String url) {
        Bitmap bm = null;
        try {
            URL iconUrl = new URL(url);
            URLConnection conn = iconUrl.openConnection();
            HttpURLConnection http = (HttpURLConnection) conn;
    
            int length = http.getContentLength();
    
            conn.connect();
            // 获得图像的字符流
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is, length);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();// 关闭流
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return bm;
    }

     

    可配合前台线程显示

     

    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case REFRESH_COMPLETE:
                    myheadimage.setImageBitmap(bitmap);//显示
                    break;
            }
        }
    };
    String imageUrl = "http://www.pp3.cn/uploads/201511/2015111212.jpg";
    bitmap= returnBitMap(imageUrl);
    mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 1000);

    bitmap转file

    private  String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)
            ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//
    
    private  String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确

     

    saveFile(bmp, System.currentTimeMillis() + ".png");
      //保存方法
        private void saveFile(Bitmap bm, String fileName) throws IOException {
            String subForder = SAVE_REAL_PATH;
            File foder = new File(subForder);
            if (!foder.exists()) foder.mkdirs();
    
            File myCaptureFile = new File(subForder, fileName);
            Log.e("lgq","图片保持。。。。wwww。。。。"+myCaptureFile);
            ends = myCaptureFile.getPath();
            if (!myCaptureFile.exists()) myCaptureFile.createNewFile();
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
            bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
            bos.flush();
            bos.close();
    //        ToastUtil.showSuccess(getApplicationContext(), "已保存在/good/savePic目录下", Toast.LENGTH_SHORT);
            //发送广播通知系统
            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri uri = Uri.fromFile(myCaptureFile);
            intent.setData(uri);
            this.sendBroadcast(intent);
        }

    bitmap与byte[]之间相互转换

     

    Android 图片压缩,bitmap与byte[]之间相互转换:https://blog.csdn.net/meixi_android/article/details/89921090

    展开全文
  • Bitmap createBitmap 相关参数

    万次阅读 2018-04-27 15:24:57
    (一) Bitmap方法相关参数:(1) Bitmap createBitmap (Bitmap src)从原位图src复制出一个新的位图,和原始位图相同(2) Bitmap createBitmap (int width, int height, Bitmap.Config config)根据参数创建新位图int ...
    (一) Bitmap方法相关参数:
    (1) Bitmap createBitmap (Bitmap src)
    从原位图src复制出一个新的位图,和原始位图相同


    (2) Bitmap createBitmap (int width, int height, Bitmap.Config config)
    根据参数创建新位图
    int width    The width of the bitmap
    int height   The height of the bitmap
    config The bitmap config to create


    (3) Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
    返回一个不可变的源位图的位图的子集,改变了可选的矩阵。新的位图可能与源相同的对象,或可能是一个副本。
    它初始化与原始位图的密度。如果源位图是不可变的,请求的子集是一样的源位图本身,然后返回源位图,没有新的位图创建。
    (从原始位图剪切图像,这是一种高级的方式。可以用Matrix(矩阵)来实现旋转等高级方式截图)

    sourceBitmap  产生子位图的源位图;
    x int         子位图第一个像素在源位图的X坐标
    y int   子位图第一个像素在源位图的y坐标
    width int     子位图每一行的像素个数
    height int    子位图的行数
    m  Matrix     对像素值进行变换的可选矩阵
    filter boolean    如果为true,源图要被过滤。该参数仅在matrix包含了超过一个翻转才有效
    Returns Bitmap   一个描述了源图指定子集的位图


    (4) public static Bitmap createBitmap (int[] colors, int width, int height, Bitmap.Config config) 
    这个函数根据颜色数组来创建位图,注意:颜色数组的长度>=width*height
    (此函数创建位图的过程可以简单概括为为:更加width和height创建空位图,然后用指定的颜色数组colors来从左到右从上至下一次填充颜色。
     config是一个枚举,可以用它来指定位图“质量”。)


    (5) public static Bitmap createBitmap (int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)
    offset      写入到pixels[]中的第一个像素索引值 
    stride      pixels[]中的行间距个数值(必须大于等于位图宽度) 
    展开全文
  • bitmap的createBitmap

    2016-10-12 15:42:35
    可以对bitmap操作1.public static Bitmap createBitmap (Bitmap src) 从原位图src复制出一个新的位图,和原始位图相同2.public static Bitmap createBitmap (int[] colors, int width, int height, Bitmap.Config ...
  • File tempFile = null;... Bitmap bitmap = BitmapUtils.createThumbnail(imagePath, 1080, 1080 * 1920); if (bitmap != null) { Bitmap tmp = BitmapUtils.rotateImg(BitmapUtils.getOrientati
  • Bitmap与Uri互转 Activity传递Bitmap 分享Bitmap
  • BitMap算法

    万次阅读 2017-03-19 22:05:50
    http://blog.csdn.net/pipisorry/article/details/62443757BitMapBitMap从字面的意思,很多人认为是位图,其实准确的来说,翻译成基于位的映射。在所有具有性能优化的数据结构中,大家使用最多的就是hash表,是的,...
  • Bitmap镜像

    千次阅读 2018-03-28 21:47:34
    private Bitmap convertBitmap(Bitmap srcBitmap){ int width = srcBitmap.getWidth(); int height = srcBitmap.getHeight(); Bitmap newBitmap = Bitmap.createBitmap(width,height, Bitmap.Config.AR...
  • Bitmap复用

    2017-11-29 12:57:18
    1.Bitmap的复用 有时候我们需要很多相同尺寸的bitmap来承载画面,比如在播放视频的时候,这种时候对bitmap复用就非常有意义了。 Bitmap bitmap = Bitmap.createBitmap(videoWidth, videoHeight , Bitmap....
  • BitMap与RoaringBitmap、JavaEWAH

    千次阅读 2019-04-21 01:02:18
    一、BitMap 介绍 BitMap使用bit位,来标记元素对应的Value。该算法能够节省存储空间。 假设一个场景,要存0-7以内的数字[3,5,6,1,2],尽可能的节省空间。一种思路就是单纯使用数组存储,但如果数据量放大百万倍甚至...
  • Bitmap createBitmap()裁剪图片

    千次阅读 2019-02-21 21:38:10
    因此便用到了Bitmap的裁剪。也就用到了 createBitmap() 这个方法。这里仅做一下记录。 这是官方的API介绍 /** * Returns an immutable bitmap from the specified subset of the source * bitmap. Th...
  • Bitmap索引

    千次阅读 2018-09-20 15:16:23
    Bitmap索引到底是个神马 Bitmap称为位图 举个简单的例子来演示如何使用Bitmap Index来加速数据库的多维查询性能。下图是一张典型的时序数据表: Timestamp Page Username ...
  • public static Bitmap getMutableBitmap(Bitmap bitmap)  {  if(bitmap == null || bitmap.isMutable())  {  return bitmap;  }    try {  File file = new File(AppConstants.SDCARD_PATH+"/mutab
  • Android 高效显示Bitmap图片

    万次阅读 2020-09-24 10:11:08
    Android 高效显示Bitmap图片 本文会介绍一些处理与加载Bitmap对象的常用方法,这些技术能够使得程序的UI不会被阻塞,并且可以避免程序超出内存限制。如果我们不注意这些,Bitmap会迅速的消耗掉可用内存从而导致...
  • C#合并BitMap图像,生成超大bitmap

    千次阅读 2019-09-10 13:36:36
    使用c#,合并多个bitMap图像 当只需要两个图像合并的时候,可以简单的使用gdi+,把两个图像画到一个画布上面实现合并bitmap. 当需要将许多bitmap合并时,由于bitmap类限制,长度或宽度太大时会报异常,前面这种方法...
  • 无意间看到Bitmap.createBitmap的源码,发现其中有一句很有趣的话 “The new bitmap may be the same object as source, or a copy may have been made”。如下图: 于是乎,搜索了相关内容,看到有一篇文章遇到一...
  • gdiplus Bitmap 转 gdi BITMAP

    千次阅读 2014-08-20 09:51:26
    1,通过GetHBITMAP()实现 在笔者的机子上,不管PixelFormat是8bit,24bit,还是32bit,...通过以下方法查看BITMAP位深度: HBitmap to BITMAP: BITMAP bmp; ::GetObject(hbmp,sizeof(BITMAP),&bmp); 分析原因,可能是HBI
  • Bitmap createBitmap参数(三)

    万次阅读 2016-06-07 11:17:16
    Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) Returns an immutable bitmap from subset of the source bitmap, transformed by the optio
  • Android Bitmap

    千次阅读 2015-09-17 21:18:40
    开发应用过程中图片的使用是必不可少的,在Android中除了使用Drawable资源中的图片,我们还可以使用Bitmap,Picture类等创建图片。  Bitmap Bitmap代表一张位图。Bitmap能能够直接创建,要通过Bitmap.Factory来...
  • Bitmap合成

    2014-12-25 15:46:01
    Bitmap bitmap1;...Bitmap bitmap3 = Bitmap.createBitmap(bitmap1.getWidth(), bitmap1.getHeight(), bitmap1.getConfig());  Canvas canvas = new Canvas(bitmap3);  canvas.drawBitmap(b
  • roaringbitmap 源码解析 bitmap add过程

    千次阅读 2017-07-06 21:17:27
    底层涉及到位图的处理,所以涉及到roaringbitmap。 roaringbitmap 主要使用add and or xor remove serialize deserialize 等操作。 roaringbitmap 主要容器container,以及所有实现,所有操作其实就是这些容器之间...
  • Bitmap createBitmap参数(二)

    千次阅读 2016-06-07 10:34:15
    Bitmap createBitmap (Bitmap src) Returns an immutable bitmap from the source bitmap. The new bitmap may be the same object as source, or a copy may have been made. It is initialized with th
  • Bitmap高效加载

    千次阅读 2019-04-10 16:37:37
    1.Bitmap的基础概念 Bitmap是Android系统中的图像处理的最重要类之,Bitmap可以获取图片的信息,可以将信息进行缩放,裁剪等操作,提供了图片文件的操作支持。 2.Bitmap加载方式 BitmapFactory.decodeFile(); 文件...
  • 遇到了一个很坑的问题,在调用下面的方法截图的时候,调用第一次没...public static Bitmap createBitmap(Context context, WebView webview) { Bitmap bmp = null; Picture snapShot = webview.captu
  • bitmap画圆

    千次阅读 2014-01-23 16:39:33
    /** * 转换图片成椭圆 * * @param bitmap * @return */ public static Bitmap getRoundedCornerBitmap(Bitmap ... Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), C
  • Bitmap总结

    千次阅读 2015-11-30 00:28:05
    Bitmap可以说是图像处理中最重要的类,可以实现图像的剪切,旋转,旋转操作,我正在做的就是一个图片处理app,下面我会说一些在项目中遇到的问题和一些解决方案。 Android中Bitmap,byte[],Drawable相互转化 1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,549
精华内容 21,819
关键字:

bitmap