Android图片图形处理文档格式.docx
《Android图片图形处理文档格式.docx》由会员分享,可在线阅读,更多相关《Android图片图形处理文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
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之后怎么做,就是说我打开文件夹就能开间带有水印的图片了,烦你指导下啊,谢谢
joe_zhpf(初级程序员)2010-08-15
我理解你是想把bitmap保存文件?
如果你是想存文件,前面我也提到了.bitmap类有个写文件的方法compress,这个方法使用可以看api.
举个例子:
首先获得带有水印的图片,desBitmap.
Java代码
1.
File
bitmapFile
=
new
File(路径,文件名);
2.
FileOutputStream
bitmapWtriter
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("
}
你就可以到你指定的目录下看你保存的图片了.
Android之图片处理(图片合成、图片圆角、图片翻转、图片缩放)
2010-12-1312:
53
图片合成
/**
*图片合成
*@parambitmap
*@return
*/
privateBitmapcreateBitmap(Bitmapsrc,Bitmapwatermark){
if(src==null){
}
//createthenewblankbitmap
//创建一个新的和SRC长度宽度一样的位图
//drawsrcinto
//在0,0坐标开始画入src
//drawwatermarkinto
//在src的右下角画入水印
//保存
//store
//存储
图片圆角
*图片圆角
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
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"
>
FrameLayoutxmlns:
android="
android:
id="
@+id/layout"
layout_width="
fill_parent"
layout_height="
>
<
Gallery
@+id/showGallery"
spacing="
0dip"
/>
RelativeLayout
orientation="
horizontal"
wrap_content"
layout_gravity="
bottom"
background="
#86222222"
TextView
@+id/titleTextView"
layout_toRightOf="
@id/secondKillButton"
textColor="
#ff0000"
Button
@+id/unfoldButton"
layout_alignParentRight="
true"
text="
展开"
/RelativeLayout>
/FrameLayout>
主要的代码也很简单,还有一个简单的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<
String>
contents=null;
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<
files.length;
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());