多张图片四个方位的图片合成,改变bitmap大小,图片去色等功能
- packagecom.dzh.operateimage;
- importandroid.graphics.Bitmap;
- importandroid.graphics.Bitmap.Config;
- importandroid.graphics.BitmapFactory;
- importandroid.graphics.Canvas;
- importandroid.graphics.ColorMatrix;
- importandroid.graphics.ColorMatrixColorFilter;
- importandroid.graphics.Paint;
- importandroid.graphics.PorterDuff.Mode;
- importandroid.graphics.PorterDuffXfermode;
- importandroid.graphics.Rect;
- importandroid.graphics.RectF;
- importandroid.graphics.drawable.BitmapDrawable;
- importandroid.graphics.drawable.Drawable;
- importjava.io.ByteArrayOutputStream;
- importjava.io.File;
- importjava.io.FileNotFoundException;
- importjava.io.FileOutputStream;
- importjava.io.IOException;
- publicclassImageTools{
- publicstaticfinalintLEFT=0;
- publicstaticfinalintRIGHT=1;
- publicstaticfinalintTOP=3;
- publicstaticfinalintBOTTOM=4;
- publicstaticBitmaptoGrayscale(BitmapbmpOriginal){
- intwidth,height;
- height=bmpOriginal.getHeight();
- width=bmpOriginal.getWidth();
- BitmapbmpGrayscale=Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);
- Canvasc=newCanvas(bmpGrayscale);
- Paintpaint=newPaint();
- ColorMatrixcm=newColorMatrix();
- cm.setSaturation(0);
- ColorMatrixColorFilterf=newColorMatrixColorFilter(cm);
- paint.setColorFilter(f);
- c.drawBitmap(bmpOriginal,0,0,paint);
- returnbmpGrayscale;
- }
- publicstaticBitmaptoGrayscale(BitmapbmpOriginal,intpixels){
- returntoRoundCorner(toGrayscale(bmpOriginal),pixels);
- }
- publicstaticBitmaptoRoundCorner(Bitmapbitmap,intpixels){
- Bitmapoutput=Bitmap
- .createBitmap(bitmap.getWidth(),bitmap.getHeight(),Config.ARGB_8888);
- Canvascanvas=newCanvas(output);
- finalintcolor=0xff424242;
- finalPaintpaint=newPaint();
- finalRectrect=newRect(0,0,bitmap.getWidth(),bitmap.getHeight());
- finalRectFrectF=newRectF(rect);
- finalfloatroundPx=pixels;
- paint.setAntiAlias(true);
- canvas.drawARGB(0,0,0,0);
- paint.setColor(color);
- canvas.drawRoundRect(rectF,roundPx,roundPx,paint);
- paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));
- canvas.drawBitmap(bitmap,rect,rect,paint);
- returnoutput;
- }
- publicstaticBitmapDrawabletoRoundCorner(BitmapDrawablebitmapDrawable,intpixels){
- Bitmapbitmap=bitmapDrawable.getBitmap();
- bitmapDrawable=newBitmapDrawable(toRoundCorner(bitmap,pixels));
- returnbitmapDrawable;
- }
- publicstaticvoidsaveBefore(Stringpath){
- BitmapFactory.Optionsoptions=newBitmapFactory.Options();
- options.inJustDecodeBounds=true;
- Bitmapbitmap=BitmapFactory.decodeFile(path,options);
- options.inJustDecodeBounds=false;
- intbe=(int)(options.outHeight/(float)200);
- if(be<=0)
- be=1;
- options.inSampleSize=2;
- bitmap=BitmapFactory.decodeFile(path,options);
- intw=bitmap.getWidth();
- inth=bitmap.getHeight();
- System.out.println(w+""+h);
- saveJPGE_After(bitmap,path);
- }
- publicstaticvoidsavePNG_After(Bitmapbitmap,Stringname){
- Filefile=newFile(name);
- try{
- FileOutputStreamout=newFileOutputStream(file);
- if(bitmap.compress(Bitmap.CompressFormat.PNG,100,out)){
- out.flush();
- out.close();
- }
- }catch(FileNotFoundExceptione){
- e.printStackTrace();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- publicstaticvoidsaveJPGE_After(Bitmapbitmap,Stringpath){
- Filefile=newFile(path);
- try{
- FileOutputStreamout=newFileOutputStream(file);
- if(bitmap.compress(Bitmap.CompressFormat.JPEG,100,out)){
- out.flush();
- out.close();
- }
- }catch(FileNotFoundExceptione){
- e.printStackTrace();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- publicstaticBitmapcreateBitmapForWatermark(Bitmapsrc,Bitmapwatermark){
- if(src==null){
- returnnull;
- }
- intw=src.getWidth();
- inth=src.getHeight();
- intww=watermark.getWidth();
- intwh=watermark.getHeight();
- Bitmapnewb=Bitmap.createBitmap(w,h,Config.ARGB_8888);
- Canvascv=newCanvas(newb);
- cv.drawBitmap(src,0,0,null);
- cv.drawBitmap(watermark,w-ww+5,h-wh+5,null);
- cv.save(Canvas.ALL_SAVE_FLAG);
- cv.restore();
- returnnewb;
- }
- publicstaticBitmappotoMix(intdirection,Bitmap...bitmaps){
- if(bitmaps.length<=0){
- returnnull;
- }
- if(bitmaps.length==1){
- returnbitmaps[0];
- }
- BitmapnewBitmap=bitmaps[0];
- for(inti=1;i<bitmaps.length;i++){
- newBitmap=createBitmapForFotoMix(newBitmap,bitmaps[i],direction);
- }
- returnnewBitmap;
- }
- privatestaticBitmapcreateBitmapForFotoMix(Bitmapfirst,Bitmapsecond,intdirection){
- if(first==null){
- returnnull;
- }
- if(second==null){
- returnfirst;
- }
- intfw=first.getWidth();
- intfh=first.getHeight();
- intsw=second.getWidth();
- intsh=second.getHeight();
- BitmapnewBitmap=null;
- if(direction==LEFT){
- newBitmap=Bitmap.createBitmap(fw+sw,fh>sh?fh:sh,Config.ARGB_8888);
- Canvascanvas=newCanvas(newBitmap);
- canvas.drawBitmap(first,sw,0,null);
- canvas.drawBitmap(second,0,0,null);
- }elseif(direction==RIGHT){
- newBitmap=Bitmap.createBitmap(fw+sw,fh>sh?fh:sh,Config.ARGB_8888);
- Canvascanvas=newCanvas(newBitmap);
- canvas.drawBitmap(first,0,0,null);
- canvas.drawBitmap(second,fw,0,null);
- }elseif(direction==TOP){
- newBitmap=Bitmap.createBitmap(sw>fw?sw:fw,fh+sh,Config.ARGB_8888);
- Canvascanvas=newCanvas(newBitmap);
- canvas.drawBitmap(first,0,sh,null);
- canvas.drawBitmap(second,0,0,null);
- }elseif(direction==BOTTOM){
- newBitmap=Bitmap.createBitmap(sw>fw?sw:fw,fh+sh,Config.ARGB_8888);
- Canvascanvas=newCanvas(newBitmap);
- canvas.drawBitmap(first,0,0,null);
- canvas.drawBitmap(second,0,fh,null);
- }
- returnnewBitmap;
- }
- publicstaticBitmapcreateBitmapBySize(Bitmapbitmap,intwidth,intheight)
- {
- returnBitmap.createScaledBitmap(bitmap,width,height,true);
- }
- publicstaticBitmapdrawableToBitmapByBD(Drawabledrawable){
- BitmapDrawablebitmapDrawable=(BitmapDrawable)drawable;
- returnbitmapDrawable.getBitmap();
- }
- publicstaticDrawablebitmapToDrawableByBD(Bitmapbitmap){
- Drawabledrawable=newBitmapDrawable(bitmap);
- returndrawable;
- }
- publicstaticBitmapbytesToBimap(byte[]b){
- if(b.length!=0){
- returnBitmapFactory.decodeByteArray(b,0,b.length);
- }else{
- returnnull;
- }
- }
- publicstaticbyte[]bitmapToBytes(Bitmapbm){
- ByteArrayOutputStreambaos=newByteArrayOutputStream();
- bm.compress(Bitmap.CompressFormat.PNG,100,baos);
- returnbaos.toByteArray();
- }
- }
转自:http://zhanhao.iteye.com/blog/1276449,有代码附件下载
分享到:
相关推荐
Android图片处理效果demo, 圆角,倒影
Android图片处理源码,
android图片处理工具
Android图片处理矩阵
这个里面是图片处理系列的一个集合demo,里面包含了图片处理系列的所有代码,写的比较乱,没有整理,希望对大家有帮助。
android图片处理(压缩,保存,截屏,view转化为bitmap)相关函数 ImageUtils
Android图片处理.pdf Android图片处理.pdf
android资源参考代码,关于对图片的处理,用代码动态分割图片,使其形成动画
android 图片处理。手机图片的各种处理
base64的图片转化工具类,用于Android中的base64格式图片操作。图片转化成base64和base64字符串转化成图片
android图片处理,缩放、压缩、剪切、水印、黑白、旋转等10多种特效
本人的博客:android图片处理:让图片一直匀速旋转的demo
android 图片管理器 有bug不过值得学习
android图片处理总结,总结了一些关于安装的图片处理方法,欢迎借鉴
加载本地图片,优化图片加载,避免内存移除
NULL 博文链接:https://fonter.iteye.com/blog/753063
图片处理sdk(just for eclipse) Note: 新的项目(for studio)转移到https://github.com/jarlen/PhotoEdit (包括jni本地源码) cn.ffmpeg gif mp4 互转 com.js.photosdk.bodywarp 图片变形 com.js.photosdk.crop ...
Android图片处理的一个示例代码
android图片处理方法,有图片处理用到得技巧