国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android把svg圖片轉為jpg保存到相冊圖庫

2019-10-23 18:28:20
字體:
來源:轉載
供稿:網友

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

但是我們一般在瀏覽圖片時,還會有保存圖片到相冊或圖庫的操作,而Android手機自帶的相冊或圖庫是不支持查看svg格式的圖片的,所以我們需要把svg格式的圖片轉為jpg或png格式再進行保存,我的例子是保存為jpg格式,png也是一樣的,我這里寫了個工具類,可以保存jpg,png格式的圖片,也可以把svg圖片轉為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");//設置以當前時間格式為圖片名稱  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);   //創建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);   //轉為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();  }  }  //保存圖片后發送廣播通知更新數據庫  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

效果圖:

Android圖片轉為jpg保存到相冊圖庫,Android圖片保存到相冊圖庫,Android,svg圖片轉為jpg

Android圖片轉為jpg保存到相冊圖庫,Android圖片保存到相冊圖庫,Android,svg圖片轉為jpg

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临泉县| 石河子市| 盐津县| 新宁县| 大关县| 东阿县| 土默特右旗| 扶余县| 昭通市| 信宜市| 蓝山县| 新平| 通河县| 云梦县| 长汀县| 武穴市| 临漳县| 兰州市| 甘孜县| 嵊泗县| 中宁县| 浦城县| 内乡县| 泾源县| 宝应县| 富顺县| 洞头县| 盘锦市| 浙江省| 昌平区| 法库县| 交城县| 河北区| 莒南县| 临漳县| 朝阳市| 峡江县| 安化县| 广东省| 武胜县| 南部县|