12.10工作
2015-12-10 11:56
375 查看
1.安卓中给图片加水印和文字并保存到本地
package com.example.jiyao.picturecombine; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity { ImageView mIv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button= (Button) findViewById(R.id.button); Button button1= (Button) findViewById(R.id.button2); mIv= (ImageView) findViewById(R.id.imageView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap=jiashuiyin(); mIv.setImageBitmap(bitmap); saveBitmap(bitmap); } }); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap=drawTextToBitmap("哇,美女啊"); mIv.setImageBitmap(bitmap); } }); } /**保存Bitmap到本地*/ private void saveBitmap(Bitmap bm) { File f=new File("/sdcard/", "picName.jpg"); if (f.exists()){ f.delete(); } try{ FileOutputStream out = new FileOutputStream(f); bm.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); Toast.makeText(MainActivity.this,"保存成功!",Toast.LENGTH_SHORT).show(); }catch (FileNotFoundException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } /** * 1.得到一张资源图片 * 2.解析为Bitmap * 3.合成两张图片 * */ private Bitmap jiashuiyin() { Bitmap pictureBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.beauty); Bitmap watermark=BitmapFactory.decodeResource(this.getResources(), R.drawable.life_watermark_small); int w=pictureBitmap.getWidth(); int h=pictureBitmap.getHeight(); int ww=watermark.getWidth(); int wh=watermark.getHeight(); Bitmap newb = Bitmap.createBitmap( w, h, Bitmap.Config.ARGB_8888);//创建一个新的和SRC Canvas cv = new Canvas(newb); //draw src into cv.drawBitmap(pictureBitmap, 0, 0, null );//在 0,0坐标开始画入src //draw watermark into // cv.drawBitmap( watermark, w - ww + 5, h - wh + 5, null );//在src的右下角画入水印 cv.drawBitmap( watermark, 0, h - wh, null );//在src的右下角画入水印 //save all clip cv.save( Canvas.ALL_SAVE_FLAG );//保存 //store cv.restore();//存储 return newb; } /** * 图片上动态添加文字 * */ public Bitmap drawTextToBitmap(String text) { Bitmap pictureBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.beauty); //临时标记图 Bitmap imgTemp = Bitmap.createBitmap(pictureBitmap.getWidth(), pictureBitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas=new Canvas(imgTemp); Paint paint=new Paint(); paint.setDither(true);//获取跟清晰的图像采样 paint.setFilterBitmap(true);//过滤一些 Rect src = new Rect(0, 0, pictureBitmap.getWidth(), pictureBitmap.getHeight());//创建一个指定的新矩形的坐标 Rect dst = new Rect(0, 0, pictureBitmap.getWidth(), pictureBitmap.getHeight());//创建一个指定的新矩形的坐标 canvas.drawBitmap(pictureBitmap, src, dst, paint);//将pictureBitmap缩放或则扩大到dst使用的填充区photoPaint Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);//设置画笔 textPaint.setTextSize(200.0f); textPaint.setTypeface(Typeface.DEFAULT_BOLD); // 采用默认的宽度 //textPaint.setShadowLayer(3f, 1, 1,this.getResources().getColor(android.R.color.background_dark));//阴影的设置 textPaint.setColor(Color.WHITE); canvas.drawText(text, pictureBitmap.getWidth() /2-5, pictureBitmap.getHeight()/2+5, textPaint);//绘制上去字,开始未知x,y采用那只笔绘制(控制位置) canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); return imgTemp; } }2.手势操作
private GestureDetector gestureDetector=null; int i=1; private void initGesture(){ gestureDetector=new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } @Override public boolean onDoubleTap(MotionEvent e) { Bitmap bitmap=rotateBitmap(90*i++,currentBitmap); mGPUImageView.setImage(bitmap); return super.onDoubleTap(e); } }); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); }
相关文章推荐
- 窗体间的传值
- 用IFrame作预览pdf,图片
- Graphics Rendering: Render Command Encoder
- Spring Mvc @ResponseBody 返回Json信息报406(Not Acceptable)
- POPTEST 150801 祝大家前途似锦
- ARP 协议
- project euler 69
- 软件设计六大原则
- SSH配置以及多个SSH & config文件
- 【Swift】—— 中国课程
- discuz x3.2使用小记
- bootstrapCDN和本地化
- 【adb】如何在Android模拟器下添加busybox?
- 2330: [SCOI2011]糖果
- unset
- Touch事件分发机制
- Android Studio 编译报错:Process 'command 'D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe'' finished with non-zero exit value 1
- cell展开的几种方式
- overridePendingTransition动画只设置一个
- JS获取select属性值