2016-01-19 196 views
0

在我的代碼中,我有一個圖像轉換位圖,更改大小並分配了setDensity。然後我保存在sd中。android更改位圖圖像的dpi的dpi dpi

在這個例子中,最終的尺寸將是5×7英寸

這是我的代碼:

private void SaveImage(Bitmap myBitmap) { 

     int TARGET_DENSITY = 300; 
     int PHYSICAL_WIDTH_IN_INCH = 5; 
     int PHYSICAL_HEIGHT_IN_INCH = 7; 

     Bitmap bmp = Bitmap.createBitmap(PHYSICAL_WIDTH_IN_INCH * TARGET_DENSITY, PHYSICAL_HEIGHT_IN_INCH * TARGET_DENSITY, Bitmap.Config.ARGB_8888); 

     Canvas canvas = new Canvas(bmp); 
     canvas.drawBitmap(myBitmap, 0, 0, new Paint()); 

     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/aaa"); 
     myDir.mkdirs(); 
     Random generator = new Random(); 
     int n = 10000; 
     n = generator.nextInt(n); 
     String fname = "Image-"+ n +".jpg"; 
     File file = new File (myDir, fname); 
     if (file.exists()) file.delete(); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      bmp.setDensity(TARGET_DENSITY); 
      bmp.compress(Bitmap.CompressFormat.JPEG, 100, out); 
      out.flush(); 
      out.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.i("control","Error"); 
     } 
    } 

圖像的原始尺寸爲w:1024 XH:768px - 300DPI

由該應用產生的圖像的最終尺寸是:W:1500 XH:2100px - 72dpi的

如果使用的Photoshop改變72 dpi的爲300 dpi,則結果是正確的(5x7inches),但圖片輸出在72dpi

有沒有什麼辦法,該圖像是從應用程序與300dpi生成?

我正在查找信息,但沒有成功。

在此先感謝

回答

1

沒有什麼不對您的圖像。它的像素爲1500 x 2100像素,因此如果它在300dpi設備上呈現,圖像將爲5「x7」。

JPEG格式不存儲任何分辨率信息,一切都以像素爲單位。 72dpi來自PhotoShop,它是將像素轉換爲英寸的默認分辨率設置。爲什麼72?你得問問PhotoShop團隊。

PhotoShop允許您設置DPI分辨率,以便當水平和垂直標尺以英寸顯示時,它們將根據您的目標輸出設備顯示正確的測量結果。更改DPI不會更改圖像的任何屬性。