Android 如何将Canvas上绘制的内容保存成本地图片
2014-10-09 09:16
489 查看
效果如下图所示
保存在sd卡上的文件为
手机上显示效果为:
1》》在Manifest文件中增加相应权限
例如我的Manifest文件代码如下:
2》》详细代码如下
保存在sd卡上的文件为
手机上显示效果为:
1》》在Manifest文件中增加相应权限
<!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
例如我的Manifest文件代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.picturetest" android:versionCode="1" android:versionName="1.0" > <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
2》》详细代码如下
package com.demo.picturetest; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.ImageView; public class MainActivity extends Activity { private Bitmap mBitmap; // 画布 private Canvas mCanvas; // 画笔--画图片 private Paint mPicturePaint = new Paint(); // 画笔--写字 private Paint mTextPaint = new Paint(); // 画笔--写运动数据 private Paint mDataPaint = new Paint(); private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawBitmap(); init(); // 展示 mImageView.setImageBitmap(mBitmap); } private void init() { mImageView = (ImageView) findViewById(R.id.mImageView); } /** * 根据图片和文字生成图片 * */ private void drawBitmap() { Bitmap bm_bg = BitmapFactory.decodeResource(getResources(), R.drawable.dashboard_bg); // 得到图片的宽、高 int width_bg = bm_bg.getWidth(); int height_bg = bm_bg.getHeight(); // 创建一个你需要尺寸的Bitmap mBitmap = Bitmap.createBitmap(width_bg, height_bg, Config.ARGB_8888); // 用这个Bitmap生成一个Canvas,然后canvas就会把内容绘制到上面这个bitmap中 mCanvas = new Canvas(mBitmap); // 绘制背景图片 mCanvas.drawBitmap(bm_bg, 0.0f, 0.0f, mPicturePaint); // 绘制图片 Bitmap bm_head = BitmapFactory.decodeResource(getResources(), R.drawable.share_head_img); // 得到图片的宽、高 int width_head = bm_head.getWidth(); int height_head = bm_head.getHeight(); // 绘制图片--保证其在水平方向居中 mCanvas.drawBitmap(bm_head, (width_bg - width_head) / 2, 0.0f, mPicturePaint); // 绘制文字 mTextPaint.setColor(Color.WHITE);// 白色画笔 mTextPaint.setTextSize(80.0f);// 设置字体大小 // 绘制文字 mDataPaint.setColor(Color.RED);// 红色画笔 mDataPaint.setTextSize(120.0f);// 设置字体大小 String distanceTextString = "运动距离:"; String distanceDataString = String.valueOf(888); String distanceScalString = "米"; float distanceTextString_width = mTextPaint.measureText( distanceTextString, 0, distanceTextString.length()); float distanceDataString_width = mDataPaint.measureText( distanceDataString, 0, distanceDataString.length()); float distanceScalString_width = mTextPaint.measureText( distanceScalString, 0, distanceScalString.length()); float x = (width_bg - distanceTextString_width - distanceDataString_width - distanceScalString_width) / 2; mCanvas.drawText(distanceTextString, x, height_head, mTextPaint);// 绘制文字 mCanvas.drawText(distanceDataString, x + distanceTextString_width, height_head, mDataPaint);// 绘制文字 mCanvas.drawText(distanceScalString, x + distanceTextString_width + distanceDataString_width, height_head, mTextPaint);// 绘制文字 // 保存绘图为本地图片 mCanvas.save(Canvas.ALL_SAVE_FLAG); mCanvas.restore(); File file = new File(Environment.getExternalStorageDirectory() .getPath() + "/share_pic.png");// 保存到sdcard根目录下,文件名为share_pic.png Log.i("CXC", Environment.getExternalStorageDirectory().getPath()); FileOutputStream fos = null; try { fos = new FileOutputStream(file); mBitmap.compress(Bitmap.CompressFormat.PNG, 50, fos); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- Android 如何将Canvas上绘制的内容保存成本地图片(转)
- 如何将Canvas中内容保存为图片
- 如何将Canvas中内容保存为图片
- 如何将Canvas中内容保存为图片
- android canvas 绘制bitmap并保存到本地
- 将HTML5 Canvas的内容保存为图片
- android中Canvas使用drawBitmap绘制图片
- 将画布(canvas)图像保存成本地图片的方法
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- android,保存绘制的图片
- 将HTML5 Canvas的内容保存为图片借助toDataURL实现
- HTML5 Canvas的内容保存为图片toDataURL()
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byt
- Android Canvas绘制图片层叠处理方式porterduff xfermode
- Android绘制进阶之六:触摸轨迹的绘制及图片的保存
- android中Canvas使用drawBitmap绘制图片
- android图像绘制(五)——画布保存为图片
- android 如何获取保存在SD卡中的图片的路径?
- web中,如何读取Word内容(包含表格,但不包含图片)并且显示在页面中或保存进数据库中