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

首頁 > 系統 > Android > 正文

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

2019-12-12 02:50:33
字體:
來源:轉載
供稿:網友

我上一篇文章寫了《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

效果圖:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 疏勒县| 阜新市| 定结县| 罗城| 怀来县| 太保市| 揭西县| 房山区| 肥西县| 光泽县| 博兴县| 镶黄旗| 青神县| 界首市| 大余县| 兴仁县| 青岛市| 蓬安县| 尼勒克县| 玛曲县| 湖北省| 鄂伦春自治旗| 大埔区| 泊头市| 昔阳县| 嵊泗县| 栖霞市| 繁昌县| 大厂| 石景山区| 运城市| 武冈市| 万全县| 黄陵县| 江永县| 桐庐县| 高安市| 海阳市| 铜陵市| 睢宁县| 武邑县|