亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android把svg圖片轉(zhuǎn)為jpg保存到相冊圖庫

 更新時間:2017年05月22日 10:57:19   作者:HAndroidevelopcker  
這篇文章主要為大家詳細介紹了Android把svg圖片轉(zhuǎn)為jpg保存到相冊圖庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下

我上一篇文章寫了《Android加載html中的svg格式圖片進行顯示〉,有興趣的同學(xué)可以去看看地址:Android加載html中svg格式圖片進行顯示

但是我們一般在瀏覽圖片時,還會有保存圖片到相冊或圖庫的操作,而Android手機自帶的相冊或圖庫是不支持查看svg格式的圖片的,所以我們需要把svg格式的圖片轉(zhuǎn)為jpg或png格式再進行保存,我的例子是保存為jpg格式,png也是一樣的,我這里寫了個工具類,可以保存jpg,png格式的圖片,也可以把svg圖片轉(zhuǎn)為jpg進行保存.接下來我貼下我的代碼:

public class FileUtils {
 public static void savePhoto(final Context context, final String url , final SaveResultCallback saveResultCallback) {
 new Thread(new Runnable() {


  @Override
  public void run() {
  File appDir = new File(Environment.getExternalStorageDirectory(), "out_photo");
  if (!appDir.exists()) {
   appDir.mkdir();
  }
  SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//設(shè)置以當前時間格式為圖片名稱
  String fileName = df.format(new Date()) + ".jpg";
  File file = new File(appDir, fileName);
  if (url.endsWith(".svg")){
   //拿到圖片在assets目錄下的相對路徑
   String replaceUrl = url.replace("file:///android_asset/", "");
   try {
   SVG svg = new SVGBuilder().readFromAsset(context.getAssets(), replaceUrl).build();
   //拿到svg圖片的drawable
   PictureDrawable drawable = svg.getDrawable();
   //圖片背景的畫筆
   Paint paint = new Paint();
   paint.setColor(Color.WHITE);
   //圖片線條的畫筆
   Paint paint1 = new Paint();
   paint1.setColor(Color.BLACK);
   //創(chuàng)建bitmap對象
   Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
   Canvas canvas = new Canvas(bitmap);
   canvas.drawRect(0,0,bitmap.getWidth()+50,bitmap.getHeight()+50,paint);
   drawable.setBounds(0,0,canvas.getWidth(),canvas.getHeight());
   drawable.draw(canvas);
   FileOutputStream fos = new FileOutputStream(file);
   //轉(zhuǎn)為jpg格式并寫入到sd卡
   bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
   fos.flush();
   fos.close();
   saveResultCallback.onSavedSuccess();
   } catch (IOException e) {
   e.printStackTrace();
   saveResultCallback.onSavedFailed();
   }
  }else {
  try {
   //保存jpg格式的圖片到相冊中
   FileOutputStream fos = new FileOutputStream(file);
   InputStream fis = context.getAssets().open(url.replace("file:///android_asset/",""));
   int len = 0;
   byte[] bytes = new byte[1024];
   while ((len = fis.read(bytes)) != -1){
   fos.write(bytes,0,len);
   }
   fos.flush();
   fis.close();
   fos.close();
   saveResultCallback.onSavedSuccess();
  } catch (FileNotFoundException e) {
   saveResultCallback.onSavedFailed();
   e.printStackTrace();
  } catch (IOException e) {
   saveResultCallback.onSavedFailed();
   e.printStackTrace();
  }
  }

  //保存圖片后發(fā)送廣播通知更新數(shù)據(jù)庫
  Uri uri = Uri.fromFile(file);
  context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
  }
 }).start();
 }

 public interface SaveResultCallback{
 void onSavedSuccess();
 void onSavedFailed();
 }

}

用到的第三方開源庫:https://github.com/japgolly/svg-android

效果圖:

歡迎大家進行交流,指正!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實現(xiàn)圓形圖片的兩種方式

    Android實現(xiàn)圓形圖片的兩種方式

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圓形圖片的兩種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android填坑系列:在小米系列等機型上放開定位權(quán)限后的定位請求彈框示例

    Android填坑系列:在小米系列等機型上放開定位權(quán)限后的定位請求彈框示例

    本文詳細介紹了在小米系列等機型上放開定位權(quán)限后的定位請求彈框示例,例如在應(yīng)用軟件中提示顯示定位服務(wù),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Android?Service完整實現(xiàn)流程分析

    Android?Service完整實現(xiàn)流程分析

    Android的服務(wù)是開發(fā)Android應(yīng)用程序的重要組成部分。不同于活動Activity,服務(wù)是在后臺運行,服務(wù)沒有接口,生命周期也與活動Activity非常不同。通過使用服務(wù)我們可以實現(xiàn)一些后臺操作,比如想從遠程服務(wù)器加載一個網(wǎng)頁等,下面來看看詳細內(nèi)容,需要的朋友可以參考下
    2023-01-01
  • Android?App頁面滑動標題欄顏色漸變詳解

    Android?App頁面滑動標題欄顏色漸變詳解

    這篇文章主要為大家詳細介紹了Android?App頁面滑動標題欄顏色漸變,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android中的windowSoftInputMode屬性詳解

    Android中的windowSoftInputMode屬性詳解

    這篇文章主要介紹了Android中的windowSoftInputMode屬性詳解,本文對windowSoftInputMode的9個屬性做了詳細總結(jié),需要的朋友可以參考下
    2014-10-10
  • 詳解Android中ViewPager的PagerTabStrip子控件的用法

    詳解Android中ViewPager的PagerTabStrip子控件的用法

    這篇文章主要介紹了Android中ViewPager的PagerTabStrip子控件的用法,PagerTabStrip與PagerTitleStrip的用法基本相同,文中舉了兩個詳細的例子,需要的朋友可以參考下
    2016-03-03
  • Android7.0 MTK設(shè)置默認桌面

    Android7.0 MTK設(shè)置默認桌面

    這篇文章主要為大家詳細介紹了Android7.0 MTK設(shè)置默認桌面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android MotionEvent中g(shù)etX()和getRawX()的區(qū)別實例詳解

    Android MotionEvent中g(shù)etX()和getRawX()的區(qū)別實例詳解

    這篇文章主要介紹了Android MotionEvent中g(shù)etX()和getRawX()的區(qū)別實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Android的進度條控件描述

    Android的進度條控件描述

    這篇文章主要介紹了android的幾種進度條控件描述的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • Flutter應(yīng)用框架搭建之屏幕適配詳解

    Flutter應(yīng)用框架搭建之屏幕適配詳解

    因移動設(shè)備的多樣性,特別是 Android 的碎片化嚴重,存在各種各樣的分辨率,而 Flutter 跨平臺開發(fā)又需同時支持 Android 和 iOS ,為盡可能的還原設(shè)計圖效果提升用戶體驗,屏幕適配就勢在必行了。本文將詳細講解Flutter屏幕適配的方法,需要的可以參考一下
    2022-03-03

最新評論