android繪圖軟件導出圖片功能的實現


實現思路:

畫圖時界面總體是一個大的View里面包含了一些其他組件,所以說想要把繪圖軟件的界面轉換成圖片導出,只需要將這個最底層的view導出成圖片。

實現方法:

1.在項目的邏輯層新建一個ViewToPicture.java類

2.類中實現如下功能:

Bitmap getBitmapFromView(View view)

傳入參數想要導出成圖片的view,返回獲取到的bitmap格式


private Bitmap getBitmapFromView(View view){

? ? ?Bitmap bitmap=null;

? ? ?try{

? ? ? ? //獲取所要的導出的圖片的長寬

? ? ? ? ? ?int width=view.getWidth();

? ? ? ? ? ?int height=view.getHeight();

? ? ? ? ? ?if(height&&width){

? ? ? ? ? ? ? ?//創(chuàng)建view對應的bitmap

? ? ? ? ? ? ? ?bitmap=Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);

? ? ? ? ? ? ? ?Canvas canvas=new Canvas(bitmap);

? ? ? ? ? ? ? ?view.layout(0,0,width,height);

? ? ? ? ? ? ? ?view.draw(canvas);

? ? ? ? ? }

? ? ? ?}catch(Exception e){

? ? ? ? ? ? ?e.getStackTrace();

? ? ? }

? ? ? return bitmap;

}


boolean saveBitmap(Bitmap bitmap, String fileName,Context context)

將生成的bitmap保存到本地相冊

public boolean saveBitmap(Bitmap bitmap, String fileName,Context context) {

//獲取手機sd card路徑

String path = Environment.getExternalStorageDirectory().getPath();

//在sd卡中新建了一個用于存放從Dr.Mind app導出的圖片

File file = new File(path+"/Dr.Mind");

//將圖片轉換為jpg格式存儲

fileName=fileName+".jpg";

File[] fileList = file.listFiles();

//查找是否已經存在該張圖片,已存在則不再存儲

for(int i=0;i<fileList.length;i++){

? ? ?if(fileName.equals(fileList[i].getName())){

? ? ? ? ? ? ? ?return false;

? ? ? }

? }

if (!file.exists()) {

? ? ?file.mkdir();

}

File imageFile = new File(file, fileName);

try {

? ? imageFile.createNewFile();

? ? FileOutputStream fos = new FileOutputStream(imageFile);

? //壓縮bimap尺寸

? ? bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fos);

? //文件流寫入文件

? ? fos.flush();

? ? fos.close();

? ?//廣播通知系統(tǒng)相冊,使得能在相冊中查看該文件夾?

? ? Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

? ? Uri uri = Uri.fromFile(file);

? ? intent.setData(uri);

? ? context.sendBroadcast(intent);

? ?} catch (FileNotFoundException e) {

? ? ?e.printStackTrace();

} catch (IOException e) {

? ? e.printStackTrace();

}

return true;

}


至此已經完成了導出圖片的所有功能,只需要使用save方法來調用這兩個方法便可完成最終的導出功能

public boolean save(View view, String name,Context context) {

Bitmap bitmap = getBitmapFromView(view);

if(saveBitmap(bitmap, name,context)) return true;

? ? return false;

}





最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容