Android图片图形处理.docx
- 文档编号:8065220
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:10
- 大小:26.04KB
Android图片图形处理.docx
《Android图片图形处理.docx》由会员分享,可在线阅读,更多相关《Android图片图形处理.docx(10页珍藏版)》请在冰豆网上搜索。
Android图片图形处理
生成水印的过程。
其实分为三个环节:
第一,载入原始图片;第二,载入水印图片;第三,保存新的图片。
1./**
2. *createthebitmapfromabytearray
3. *
4. *@paramsrcthebitmapobjectyouwantproecss
5. *@paramwatermarkthewatermarkabovethesrc
6. *@returnreturnabitmapobject,ifparamter'slengthis0,returnnull
7. */
8. privateBitmapcreateBitmap(Bitmapsrc,Bitmapwatermark)
9. {
10. Stringtag="createBitmap";
11. Log.d(tag,"createanewbitmap");
12. if(src==null)
13. {
14. returnnull;
15. }
16.
17. intw=src.getWidth();
18. inth=src.getHeight();
19. intww=watermark.getWidth();
20. intwh=watermark.getHeight();
21. //createthenewblankbitmap
22. Bitmapnewb=Bitmap.createBitmap(w,h,Config.ARGB_8888);//创建一个新的和SRC长度宽度一样的位图
23. Canvascv=newCanvas(newb);
24. //drawsrcinto
25. cv.drawBitmap(src,0,0,null);//在0,0坐标开始画入src
26. //drawwatermarkinto
27. cv.drawBitmap(watermark,w-ww+5,h-wh+5,null);//在src的右下角画入水印
28. //saveallclip
29. cv.save(Canvas.ALL_SAVE_FLAG);//保存
30. //store
31. cv.restore();//存储
32. returnnewb;
33. }
找上面里说应该是在第一张图片上有了水印,那我怎么去得到这张有水印的图片呢
------------------------------------------------------------------------------------------------------------------
问题补充:
joe_zhpf写道
返回的这个不就是最后处理后得到的带有水印的图片?
图片写文件Bitmap有个compess方法.
程序逻辑实际是:
先建立一个空可读可写的bitmap,desBtimap
载入背景图片(原始图片)(这个是只是可读的)把背景图片的像素信息画到先前建立的可读写的bitmap,即desBtimap中
接着载入水印图片,根据需要在指定的位置把水印图片的像素信息,画到desBitmap中.
保存后,返回desBitmap即是得到的带有水印的图片.
嗯,你说的这个我也知道,我刚接触,不太懂,我的意思是如何处理返回的这个desBitmap呢,代码中只把它return之后就没了,我想知道return之后怎么做,就是说我打开文件夹就能开间带有水印的图片了,烦你指导下啊,谢谢
返回的这个不就是最后处理后得到的带有水印的图片?
图片写文件Bitmap有个compess方法.
程序逻辑实际是:
先建立一个空可读可写的bitmap,desBtimap
载入背景图片(原始图片)(这个是只是可读的)把背景图片的像素信息画到先前建立的可读写的bitmap,即desBtimap中
接着载入水印图片,根据需要在指定的位置把水印图片的像素信息,画到desBitmap中.
保存后,返回desBitmap即是得到的带有水印的图片.
joe_zhpf(初级程序员)2010-08-15
我理解你是想把bitmap保存文件?
如果你是想存文件,前面我也提到了.bitmap类有个写文件的方法compress,这个方法使用可以看api.
举个例子:
首先获得带有水印的图片,desBitmap.
Java代码
1. File bitmapFile = new File(路径,文件名);
2. FileOutputStream bitmapWtriter = new FileOutputStream(bitmapFile);
3. if(desBpress(Bitmap.CompressForma.png, 100, bitmapWtiter)) {
4. Log.d("TAG","保存文件成功!
");
5.}
6.
7.
FilebitmapFile=newFile(路径,文件名);
FileOutputStreambitmapWtriter=newFileOutputStream(bitmapFile);
if(desBpress(Bitmap.CompressForma.png,100,bitmapWtiter)){
Log.d("TAG","保存文件成功!
");
}
你就可以到你指定的目录下看你保存的图片了.
Android之图片处理(图片合成、图片圆角、图片翻转、图片缩放)
2010-12-1312:
53
图片合成
/**
*图片合成
*@parambitmap
*@return
*/
privateBitmapcreateBitmap(Bitmapsrc,Bitmapwatermark){
if(src==null){
returnnull;
}
intw=src.getWidth();
inth=src.getHeight();
intww=watermark.getWidth();
intwh=watermark.getHeight();
//createthenewblankbitmap
Bitmapnewb=Bitmap.createBitmap(w,h,Config.ARGB_8888);//创建一个新的和SRC长度宽度一样的位图
Canvascv=newCanvas(newb);
//drawsrcinto
cv.drawBitmap(src,0,0,null);//在0,0坐标开始画入src
//drawwatermarkinto
cv.drawBitmap(watermark,w-ww+5,h-wh+5,null);//在src的右下角画入水印
//saveallclip
cv.save(Canvas.ALL_SAVE_FLAG);//保存
//store
cv.restore();//存储
returnnewb;
}
图片圆角
/**
*图片圆角
*@parambitmap
*@return
*/
publicstaticBitmapgetRoundedCornerBitmap(Bitmapbitmap){
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=12;
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;
}
图片缩放、翻转和旋转
/**
*缩放、翻转和旋转图片
*@parambmpOrg
*@paramrotate
*@return
*/
privateandroid.graphics.BitmapgerZoomRotateBitmap(
android.graphics.BitmapbmpOrg,introtate){
//获取图片的原始的大小
intwidth=bmpOrg.getWidth();
intheight=bmpOrg.getHeight();
intnewWidth=300;
intnewheight=300;
//定义缩放的高和宽的比例
floatsw=((float)newWidth)/width;
floatsh=((float)newheight)/height;
//创建操作图片的用的Matrix对象
android.graphics.Matrixmatrix=newandroid.graphics.Matrix();
//缩放翻转图片的动作
//swsh的绝对值为绽放宽高的比例,sw为负数表示X方向翻转,sh为负数表示Y方向翻转
matrix.postScale(sw,sh);
//旋转30*
matrix.postRotate(rotate);
//创建一个新的图片
android.graphics.BitmapresizeBitmap=android.graphics.Bitmap
.createBitmap(bmpOrg,0,0,width,height,matrix,true);
returnresizeBitmap;
}
android遮罩层效果
看到一本电子杂志上有遮罩层的效果,感觉很漂亮,以为很麻烦,搜索了很多关于android遮罩层的,也没有得出一点思路,原来就是一个透明的效果,然后上面弹出的控件是透明或者半透明之类的,可以选择颜色,还是#ARBG,其中A就是传说中的透明色的值(可以根据需要设置透明的效果),废话不多说了,发一个简单的Demo吧,是我山寨的那本杂志的效果:
(由于杂志内容主要是图片,弹出层才是给出的文字信息,所以我猜测是用Gallery显示的杂志内容)
xml布局文件:
xmlversion="1.0"encoding="utf-8"?
>
android=" android: id="@+id/layout" android: layout_width="fill_parent" android: layout_height="fill_parent" > android: id="@+id/showGallery" android: layout_width="fill_parent" android: layout_height="fill_parent" android: spacing="0dip" /> android: orientation="horizontal" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_gravity="bottom" android: background="#86222222" > android: id="@+id/titleTextView" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_toRightOf="@id/secondKillButton" android: textColor="#ff0000" /> 主要的代码也很简单,还有一个简单的Adapter,有不理解的朋友可以看我之前的blog packageoneRain.UpMagazine; importjava.io.File; importjava.util.ArrayList; importjava.util.List; importandroid.app.Activity; importandroid.graphics.Bitmap; importandroid.graphics.BitmapFactory; importandroid.graphics.Color; importandroid.os.Bundle; importandroid.view.Gravity; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.view.ViewGroup; importandroid.view.Window; importandroid.widget.AdapterView; importandroid.widget.AdapterView.OnItemSelectedListener; importandroid.widget.BaseAdapter; importandroid.widget.Button; importandroid.widget.FrameLayout; importandroid.widget.Gallery; importandroid.widget.ImageView; importandroid.widget.TextView; publicclassShowActivityextendsActivity { privateinti=1; privateintpos=0; privateList privatestaticfinalStringDIR="/mnt/sdcard/UpMagazine/2010/content/"; //设置是否展开 privatebooleanisFolded=true; //设置控件 privateFrameLayoutlayout=null; privateGalleryshowGallery=null; privateButtonunfoldButton=null; privateTextViewtextView=null; privateTextViewtitleTextView=null; publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.show); initView(); } @Override protectedvoidonResume() { //TODOAuto-generatedmethodstu super.onResume(); isFolded=true; } //初始化 privatevoidinitView() { contents=newArrayList Filedir=newFile(DIR); File[]files=dir.listFiles(); for(inti=0;i { contents.add(DIR+files[i].getName()); } layout=(FrameLayout)findViewById(R.id.layout); unfoldButton=(Button)findViewById(R.id.unfoldButton); unfoldButton.setOnClickListener(newUnfoldClickListener()); showGallery=(Gallery)findViewById(R.id.showGallery); showGallery.setOnItemSelectedListener(newGalleryOnItemSelectedListener()); showGallery.setAdapter(newShowAdapter());
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 图片 图形 处理