Android View转换成图片保存

package zhangphil.viewtoimage;

import java.io.File;
import java.io.FileOutputStream;

import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

/**
 * 把Android的一个View转换成图片保存
 *
 * */

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final TextView tv = (TextView) findViewById(R.id.textView);
		tv.setBackgroundColor(Color.GREEN);
		// tv.setDrawingCacheEnabled(true);

		final Runnable runnable = new Runnable() {
			@Override
			public void run() {
				viewSaveToImage(tv);
			}
		};

		Button button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				new Handler().post(runnable);
			}
		});

	}

	public void viewSaveToImage(View view) {
		view.setDrawingCacheEnabled(true);
		view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
		view.setDrawingCacheBackgroundColor(Color.WHITE);

		// 把一个View转换成图片
		Bitmap cachebmp = loadBitmapFromView(view);

		// 添加水印
		Bitmap bitmap = Bitmap.createBitmap(createWatermarkBitmap(cachebmp,
				"@ Zhang Phil"));

		FileOutputStream fos;
		try {
			// 判断手机设备是否有SD卡
			boolean isHasSDCard = Environment.getExternalStorageState().equals(
					android.os.Environment.MEDIA_MOUNTED);
			if (isHasSDCard) {
				// SD卡根目录
				File sdRoot = Environment.getExternalStorageDirectory();
				File file = new File(sdRoot, "test.PNG");
				fos = new FileOutputStream(file);
			} else
				throw new Exception("创建文件失败!");

			bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);

			fos.flush();
			fos.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

		view.destroyDrawingCache();
	}

	private Bitmap loadBitmapFromView(View v) {
		int w = v.getWidth();
		int h = v.getHeight();

		Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
		Canvas c = new Canvas(bmp);

		c.drawColor(Color.WHITE);
		/** 如果不设置canvas画布为白色,则生成透明 */

		v.layout(0, 0, w, h);
		v.draw(c);

		return bmp;
	}

	// 为图片target添加水印
	private Bitmap createWatermarkBitmap(Bitmap target, String str) {
		int w = target.getWidth();
		int h = target.getHeight();

		Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(bmp);

		Paint p = new Paint();

		// 水印的颜色
		p.setColor(Color.RED);

		// 水印的字体大小
		p.setTextSize(16);

		p.setAntiAlias(true);// 去锯齿

		canvas.drawBitmap(target, 0, 0, p);

		// 在中间位置开始添加水印
		canvas.drawText(str, w / 2, h / 2, p);

		canvas.save(Canvas.ALL_SAVE_FLAG);
		canvas.restore();

		return bmp;
	}
}

时间: 2024-10-12 10:55:36

Android View转换成图片保存的相关文章

Android 将View转换成Bitmap

/** * 将View转换成Bitmap的方法 * @param view * @return */ public static Bitmap getBitmapFromView(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); view.layout(0, 0, v

C# 字节流通过Base64编码转换成图片代码

C# 字节流通过Base64编码转换成图片代码 // 需载入以下的命名空间 // using System.IO; // using System.Drawing; // using System.Runtime.Serialization.Formatters.Binary; protected void Page_Load(object sender, EventArgs e) { byte[] buffer = ReadFile(Server.MapPath(@"\sex.txt"

如何word文档中的内容转换成图片

方法/步骤 例如在Word中输入了一些文字内容(如下图). 现希望下图红色方框的部分转换成图片格式,以达到保留固定格式,不被他人修改. 选中上图所示的红色部分,点击鼠标右键选择“复制”. 现在将复制的区域替换成图片:点击“开始”中的“粘贴”的下三角,然后点击“选择性粘贴”. 在打开“选择性粘贴”对话框中选择“图片(增强型图元文件)”,然后点击“确定”即可将复制的文字粘贴为图片了. 效果如下图所示,发现刚才的文字变成图片了. 想把该图片提取出来可以做如下操作:点击该图片,右键选择“另存为图片”,然

pdf文件内容如何转换成图片

在将pdf文件或者是word文档转换成为图片时,一般的方法都是讲如何使用截图的方式来把文档内容转换成图片,但是除此之外,还有什么方法可以把pdf以及office文档转换成图片吗? 如果只是将pdf文件转成图片,可以用在线工具把pdf文档的内容转换成图片的形式,这在一些专门的pdf在线转换应用中可以实现. 首先找到在线pdf转图片,并进入到首页.在首页中会有pdf转成图片的选项,直接选择该项,进入到转换的操作页面. 点选择文件,然后就可以在选择一个需要进行转换的pdf文档,选择的文件会添加到转换页

把图片转换成二进制--把二进制转换成图片

把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.textBox1.Text; byte[] imgBytesIn = SaveImage(path); ShowImgByByte(imgBytesIn); //Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn; } //

批量将网页转换成图片或PDF文档技巧分享

工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,虽然多数浏览器具有滚动截屏或者打印输出PDF文档功能,但是如果有几十上百张网页需要处理,那也是要人命的.所以我一直想找一款能够批量处理该工作的软件,但基本都是收费的,即便是收费的功能也一般.终于,我找到了wkhtmltopdf这款免费开源软件,最贴合我的工作,由衷感谢软件的作者"Jakob Truelsen"和"Ashish Kulkarni"两位大神!我安装软件后,结合windows的批处理命令,顺利测

PDF文件怎么转换成图片格式

随着PDF文件的广泛使用,我们在办公中,也会遇到PDF文件的处理.PDF文件格式稳定,无论对方使用的办公软件是WPS格式还是office格式,在接收过程中都不会发生变化.但是有时为了方便,需要把PDF文件转换成图片格式,那么,问题来了,PDF文件怎么转换成图片格式呢?下面一起来学习一下.分享工具:迅捷PDF转换器 下载链接:https://www.xunjiepdf.com/converter分享理由:转换质量高,功能丰富,是办公中必不可少的工具. 操作步骤:[步骤一]分享的工具可以到百度上面搜

CAD图纸转换成图片格式应该如何进行改变?

CAD图纸转换成图片格式应该如何进行改变?经常长时间的接触CAD的小伙伴们都会知道,CAD图纸格式转换成图片的格式是经常有的事情,那么具体我们应该如何进行操作呢,小面就来教大家一招解决CAD图纸转换成图片格式的全部操作步骤,希望大家能够进行采纳,帮助到大家! 步骤一:首先在浏览器里搜索迅捷CAD转换器下载安装到电脑端,然后打开准备操作运行!步骤二:选择点击左边工工具栏中的"CAD转图片"按钮,然后点击页面中间的 "添加文件"按钮选项,在桌面上把需要转换的CAD图纸添

20140526-一个从pdf转换成图片的类,工作当中有用到

20140526-一个从pdf转换成图片的类,工作当中有用到 package com.jako.database.model; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import