Android开发之大位图压缩水印处理
我们在发微博或者csdn博文的时候都能够给图片加上一个水印。一个独立的标识,那是怎么实现的呢?先封装一个BitmapTools封装类。该类要解决的问题是一将突破存储至sdcard中,二给图片加上水印。
BitmapTools
package com.example.g11_bitmap04; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream; import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Environment; public class BitmapTools { public BitmapTools() {
// TODO Auto-generated constructor stub
}
public static Bitmap createBitmap(Resources resources, int resid,
String name) {
Bitmap bitmap=BitmapFactory.decodeResource(resources, resid);
//复制一份新的Bitmap,由于不能直接在原有的bitmap上进行水印操作
//Bitmap.config存储的格式
Bitmap newBitmap=bitmap.copy(Bitmap.Config.ARGB_8888, true);
//使用自己定义画布
Canvas canvas=new Canvas(newBitmap);
Paint paint=new Paint();
paint.setTextSize(200);
canvas.drawText("hello", 100, 100, paint);
//推断SDcard是否在可用状态
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//直接将图片保存在根文件夹下
File root=Environment.getExternalStorageDirectory();
OutputStream outputStream=null;
try { outputStream=new FileOutputStream(new File(root, name));
//对图片进行压缩并以png格式,保存在sdcard中
newBitmap.compress(Bitmap.CompressFormat.PNG, 50, outputStream);
} catch (Exception e) {
// TODO: handle exception
}
}
return newBitmap; }
}
MainActivtiy中调用该方法
package com.example.g11_bitmap04; import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity {
private ImageView imageView;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView)this.findViewById(R.id.imageView1);
button=(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub Bitmap bitmap=BitmapTools.createBitmap(getResources(), R.drawable.a, "a.png");
imageView.setImageBitmap(bitmap);
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
Android开发之大位图压缩水印处理的更多相关文章
- Android开发之大位图二次採样压缩处理(源码分享)
图片有各种形状和大小.在很多情况下这些图片是远远大于我们的用户界面(UI)且占领着极大的内存空间,假设我们不正确位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 pa ...
- Android开发5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
- Android开发全套视频教程在线观看网盘下载
千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...
- 10本最新的Android开发电子书免费下载
最新的Android开发电子书大集合,免费下载! 1.The Business of Android Apps Development, 2nd Edition http://ebook.goodfa ...
- Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转
Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...
- Android开发用过的十大框架
http://blog.csdn.net/u011200604/article/details/51695096 本文系多方综合与转载整合,意在Android开发中能够知道和使用一些好用的第三方支持, ...
- Android开发中如何解决加载大图片时内存溢出的问题
Android开发中如何解决加载大图片时内存溢出的问题 在Android开发过程中,我们经常会遇到加载的图片过大导致内存溢出的问题,其实类似这样的问题已经屡见不鲜了,下面将一些好的解决方案分享给 ...
- Xamarin Android开发实战(上册)大学霸内部资料
Xamarin Android开发实战(上册)大学霸内部资料 试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...
- 【转】Android开发学习笔记:5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
随机推荐
- 什么是CAS?
CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术.CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目 ...
- Python 生成requirement 使用requirements.txt
第一步:python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号.以便新环境部署. requirements.txt可以通过pip命令自动生成和安装 ...
- python学习-字符串 列表 元祖
目录 Python翻转字符串(reverse string) 简单的步长为-1, 即字符串的翻转(常用) 递归反转 借用列表,使用reverse()方法 字符串常用操作 index split 切片 ...
- Java图片的压缩
1.如果在springMvc中,会自带生成MultipartFile文件,将MultipartFile转化为File MultipartFile file1 = file; CommonsMultip ...
- 修改 Mac 默认 PHP 运行环境
更新了自带php版本后,修改默认php环境变量 首先,创建 .bash_profile 文件 sudo nano ~/.bash_profile # 添加一行.注意 PHP5.4.10 修改成你正在运 ...
- 学习js与css 写个2048
学习阶段,还是写点小东西练练手学的有意思一点,今天用栅格布局做了一个2048,但是移动动画和合并特效没有做,只简单的实现了一下功能. 记录一下学习的过程. 1.入口函数,初始化界面,我这里是直接是一个 ...
- 【Oracle】ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
出现此错误的原因是因为事务等待造成的,找出等待的事务,kill即可. 下面是我当时遇到的错误: ---删除表t1时出现错误 SCOTT@GOOD> drop table t1; drop tab ...
- Postfix Self Expression
Postfix Self Expression A postfix self expression consists of an expression or the name of a type, i ...
- NGUI学习随笔
一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加.(注:用Component添加无效). 2. ...
- element合并单元格方法及遇到问题的解决办法
效果如图: 代码如下 <!-- 查看选课 --> <template> <div> <el-table :data="listData" ...