zoukankan      html  css  js  c++  java
  • Load bitmap from file Android

    
    
    public static Bitmap loadFromFile(String filename) {
          try {
              File f = new File(filename);
              if (!f.exists()) { return null; }
              Bitmap tmp = BitmapFactory.decodeFile(filename);
              return tmp;
          } catch (Exception e) {
              return null;
          }
      }
    
    
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Bitmap.CompressFormat;
    import android.os.Environment;
    
    class PictUtil {
      public static File getSavePath() {
          File path;
          if (hasSDCard()) { // SD card
              path = new File(getSDCardPath() + "/Tegaky/");
              path.mkdir();
          } else { 
              path = Environment.getDataDirectory();
          }
          return path;
      }
      public static String getCacheFilename() {
          File f = getSavePath();
          return f.getAbsolutePath() + "/cache.png";
      }
    
      public static Bitmap loadFromFile(String filename) {
          try {
              File f = new File(filename);
              if (!f.exists()) { return null; }
              Bitmap tmp = BitmapFactory.decodeFile(filename);
              return tmp;
          } catch (Exception e) {
              return null;
          }
      }
      public static Bitmap loadFromCacheFile() {
          return loadFromFile(getCacheFilename());
      }
      public static void saveToCacheFile(Bitmap bmp) {
          saveToFile(getCacheFilename(),bmp);
      }
      public static void saveToFile(String filename,Bitmap bmp) {
          try {
              FileOutputStream out = new FileOutputStream(filename);
              bmp.compress(CompressFormat.PNG, 100, out);
              out.flush();
              out.close();
          } catch(Exception e) {}
      }
    
      public static boolean hasSDCard() { // SD????????
          String status = Environment.getExternalStorageState();
          return status.equals(Environment.MEDIA_MOUNTED);
      }
      public static String getSDCardPath() {
          File path = Environment.getExternalStorageDirectory();
          return path.getAbsolutePath();
      }
    
    }

     Now question comes,about the "Bitmap tmp = BitmapFactory.decodeFile(filename);",no matter how I modify it ,the result tmp is always null!
    the main point is options,the options should be specifid,indicate the format of the image.So it should be like this:

    BitmapFactory.Options opts = new Options();
    opts.inPreferredConfig = Config.RGB_565;
    tmp=BitmapFactory.decodeFile(bitmapPath,opts);
    
    
  • 相关阅读:
    java集合-方法
    Java线程池
    java疯狂讲义第18章类的加载和反射
    java疯狂讲义第16章多线程
    JAVA集合-HashMap的实现原理
    类加载-java new一个对象的过程发生了什么/Java对象创建过程
    JVM-java垃圾回收
    JVM-java内存区域
    JVM-java堆-新生代和老年代
    448. 找到所有数组中消失的数字
  • 原文地址:https://www.cnblogs.com/qiengo/p/2554572.html
Copyright © 2011-2022 走看看