Android图片图形处理.docx

上传人:b****5 文档编号:8065220 上传时间:2023-01-28 格式:DOCX 页数:10 大小:26.04KB
下载 相关 举报
Android图片图形处理.docx_第1页
第1页 / 共10页
Android图片图形处理.docx_第2页
第2页 / 共10页
Android图片图形处理.docx_第3页
第3页 / 共10页
Android图片图形处理.docx_第4页
第4页 / 共10页
Android图片图形处理.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Android图片图形处理.docx

《Android图片图形处理.docx》由会员分享,可在线阅读,更多相关《Android图片图形处理.docx(10页珍藏版)》请在冰豆网上搜索。

Android图片图形处理.docx

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"

                />

            

                android:

id="@+id/unfoldButton"

                android:

layout_width="wrap_content"

                android:

layout_height="wrap_content"

                android:

layout_alignParentRight="true"

                android:

text="展开"

                />

    

主要的代码也很简单,还有一个简单的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;

    privateListcontents=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

        {

            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模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1