日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 如何将Canvas上绘制的内容保存成本地图片

發布時間:2024/4/15 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 如何将Canvas上绘制的内容保存成本地图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果如下圖所示

保存在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-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid: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;@Overrideprotected 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();// 創建一個你需要尺寸的BitmapmBitmap = 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.pngLog.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 blocke.printStackTrace();}try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

總結

以上是生活随笔為你收集整理的Android 如何将Canvas上绘制的内容保存成本地图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。