bitmap裁剪android
‘壹’ bitmap android怎么按圆弧剪切
按圆弧剪切,可以用Photoshop。
打开需要裁剪成圆形的图片。
右键单击工具栏第一格,左键单击选择“椭圆选框工具”。
按住鼠标左键和键盘上的Shift键,同时拖动鼠标,选中需要留下的圆形部分。(注:如果要裁剪成椭圆形,则不需要按住Shift键。)
单击“选择”——“反向”。
不需要的部分被选中。
按键盘上的Del键,删除不需要的部分。
单击“选择”——“反向”,选中需要留下的圆形部分。
单击“编辑”——“剪切”。
单击“新建”,背景内容选择“透明”,然后单击“确定”。
单击“编辑”——“粘贴”,图片就裁剪好了。之后只要单击“文件”——“存储”,就可以保存图片了。
‘贰’ Android超简单实现炫酷的图片展示效果
这里的实现原理很简单,就是添加多个矩形路径,并不断的延长各个矩形路径的宽度(通过onDraw方法的递归实现),然后在矩形路径中绘制Bitmap即可。
1. 构建用于展示的Bitmap
这里我们选择在onSizeChanged方法中初始化Bitmap,因为当控件大小改变时方便我们重新计算所需展示Bitmap的大小。
2. 构建矩形裁剪区域并添加到Path中
3. 在对应的路径中绘制出Bitmap
这里使用Canvas的clipPath方法将画布裁切成路径的形状,然后在裁切后的画布上绘制图片。
4. 利用递归实现动画效果
5. 当图片完全显示时替换图片
图片完全显示也是cilpWidth>控件宽度的时候。
扫描式图片展示
‘叁’ Android Bitmap理解
参考:
Android Bitmap 详解:关于 Bitamp 你所要知道的一切
Android Bitmap(位图)详解
图片是由大量且有限个数的像素点组成。把一张图片通过bitmap的方式创建到内存中,实际上就是在内存中创建了一个叫做Bitmap的对象,然后把 图片所有像素 解码后的数据存放在Bitmap对象里面,Bitmap就拥有了图片的宽高,透明度,颜色值等数据。所以Bitmap的创建是通过BitmapFactory.decodeXxx()。
Config是Bitmap类中的枚举类。像素由ARGB四个颜色通道组成。Config描述位图中像素的存储方式。 这里的存储方式,无非就是对颜色通道和用多大的容器(bit)来存储的排列组合。所以config会影响图片透明度,占用内存大小,保存成文件的大小,图片质量。
Config的字母表示该配置存储的像素的颜色通道,数字表示对应通道的数据用多少位来存储。
ALPHA_8:表示只存储alpha通道,使用8bit(1字节)的内存(容器)来存储一个像素。
RGB_565:表示存储RGB三个通道,分别使用5bit,6bit,5bit的内存(容器)来存储一个像素。
ARGB_4444:表示存储ARGB四个通道,每个通道都是以4bit的内存(容器)来存储一个像素。
ARGB_8888:表示存储ARGB四个通道,每个通道都是以8bit的内存(容器)来存储一个像素。
所以,ARGB_8888配置占用内存最大,图片质量最高。
图片压缩的一个思路就是降低图片的配置。
总内存 = 宽的像素数 × 高的像素数 × 每个像素点占用的大小
注:
1 byte = 8 bit
1 KB = 1024 byte
‘肆’ Android 控件 RoundedBitmapDrawable
RoundedBitmapDrawable 是 supportV4 下的一个类,有了它,显示圆角和圆形图片的情况下就不需要额外的第三方类库了,还能和各种图片加载库配合使用。
点击此处 可以看到官方的介绍。
setCircular(boolean circular) : 把图片的形状设为圆形;
setCornerRadius(float cornerRadius) : 设置图片的圆角半径。
这里贴一下源码,更能清晰的知道它的实现:
至于具体的实现,阅读源码发现官方使用了 BitmapShader 来实现的圆角。
效果
首先来看下原图和处理后效果,以及做一些扩展,如添加一个边框
通过 RoundedBitmapDrawableFactory 传递要转换bitmap 我就可以很简单的生成一个如下图的圆角图片
可以看到我们仅仅只是改了一个属性就实现了如下图正圆形的转换,但你可能已经发现图像有一些变形,因为内部在接收到 circular == true 后先是对图像进行了转换为正方形的操作,这个操作是一个伸缩放操作,而不是裁剪,所以图像发生了变形,所以在使用 setCircular 时最好能保证你的原图时一个正方形的,如果不是的话,下面我们也会给出相应解决方案
我们自己进行对bitmap的裁剪来转换成正方形,就解决了上面提到的拉伸问题,再绘制边框就实现了一个如下带边框的正圆形图片
RoundedBitmapDrawable 也可以直接设置转换过程的
这些操作,来更好的工作
到这个里我们就可以把项目中的圆角图片的控件更换一下,平时记得多留意一下系统提供的一些API,可能会帮我们节省不少时间。
引用:
★★★ Android一些容易被忽略的类-RoundedBitmapDrawable
★★ Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角
‘伍’ bitmap缩放到指定大小-android中怎么是bitmap缩小
如何对图片进行缩放到适应屏幕大小呀/**显示图片,使用BitmapFactory()*path
*图片SD卡路径****/
privatevoidshow_Image(Stringpath){
//TODOAuto-generatedmethodstub
opts=new();
=2;//宽高设置成原来的1/2
Bitmapbit=newBitmapFactory().decodeFile(path,opts);
show_(bit);
还有很多属性,你去查查吧,另外如果非要适应屏幕大小的话,你还需要获取屏幕的大小,然后图片大小跟屏幕大小比较,没弄过一定要图片跟屏幕大小填充满的判空,就算填充满,一定也会失真
android中怎么是bitmap缩小/**Bitmap放大的方法*/
privatestaticBitmapbig(Bitmapbitmap){
Matrixmatrix=newMatrix();
(1.5f,1.5f);//长和宽放大缩小的比例
BitmapresizeBmp=(bitmap,0,0,(),(),matrix,true);
returnresizeBmp;
}
这里放大缩小的方法都有:
android缩放和压缩的区别android缩放和压缩图片可以如下解释亏蠢:
压缩图片
这里简单的将一个图片文件转换为Bitmap,并且在转换的过程中对图片质量进行简单压缩:
(,intquality,FileOutputStreamfos);
注意这里的quality的范围为0~100,经过测试如果这个值设置比较低的话图片会非常不清晰,基本不可用,0~100的值可以参考类似Photoshop之类输出图片时选择的图片质量.
此方法只是单纯对图片质量进行处理,并不会改变其大小,如果需要改变图片文件的大小,最好是使用缩放,这个可以在保证一定的图片清晰度的情况下减少了图片大小,毕竟手机屏幕就那么点,你把2000px*1000px的图片改为500px*250px在手机用户看来也不会有太严重的不适感,而如果你只设置图片的quality想来改变文件大小,你最后会发现得到的是一个2000px*1000px的几个色块.
缩放图片
先提代码看看:
[java]viewplain
/**
*保持长宽比缩小Bitmap
*
*@parambitmap
*@parammaxWidth
*@parammaxHeight
*@return
*/
publicBitmapresizeBitmap(Bitmapbitmap,intmaxWidth,intmaxHeight){
intoriginWidth=();
intoriginHeight=();
//noneedtoresize
if(originWidth<maxWidth&&originHeight<maxHeight){
returnbitmap;
}
intwidth=originWidth;
intheight=originHeight;
//若图片过宽,则保持长宽比缩放图片
if(originWidth>maxWidth){
width=maxWidth;
doublei=originWidth*1.0/maxWidth;
height=(int)(originHeight/i);
bitmap=(bitmap,width,height,false);
}
//若图片过长,则从上端截取
if(height>maxHeight){
height=maxHeight;
bitmap=(bitmap,0,0,width,height);
}
//Log.i(TAG,width+"width");
//Log.i(TAG,height+"height");
returnbitmap;
}
这里演掘空瞎示是将图片缩小到一个max范围内,而不是直接将变成硬性的变成某个尺寸的图片,因为一般来说这种设置max的方式符合大部分需要,如果必须将图片变成某个指定尺寸可以直接使用方法,也是下面要介绍的.
此函数主要就是使用了Bitmap的两个静态方法,一个是:
(Bitmapsrc,intdstWidth,intdstHeight,booleanfilter)
此方法就会把一个Bitmap图片缩放成指定的尺寸.