1

이미지를 촬영하여 SD 카드에 저장하는 카메라 애플리케이션이 있습니다.이미지 해상도

저장된 이미지의 해상도를 확인하면 120X160 픽셀로 발견됩니다.

그러나 카메라로 찍은 정상적인 이미지는 640x480 픽셀입니다.

해상도를 낮추고 싶지 않습니다. uplz가 왜 이런 일이 일어 났는지 설명 할 수 있습니까 ??

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 

     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode == RESULT_OK){ 
      Bundle extras = data.getExtras(); 



      Bitmap bmp1 = (Bitmap) extras.get("data"); 



      //now storing the image in sdcard, folder name is same as the model name 

      ByteArrayOutputStream bytes1 = new ByteArrayOutputStream(); 
      scaled1.compress(Bitmap.CompressFormat.PNG, 100, bytes1); 

      File f1 = new File(folder,"bmp1.png"); 

      try { 
       f1.createNewFile(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      FileOutputStream fo1 = null; 

      try { 
       fo1 = new FileOutputStream(f1); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       fo1.write(bytes1.toByteArray()); 
       fo1.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
}  

Wil 자신 만의 카메라를 만들어야합니다. 활동 ?? 내가 지금 당신의 문제에 대한 해결책을 찾을 수

+1

도와주세요 .. 초보자입니다 [여기] (http://stackoverflow.com/questions/2729267/android-camera-intent) – Renard

+0

는 유 PLZ 지정할 수 있습니다 링크? – Kumar

+0

"데이터"추가 정보는 캡처 한 이미지를 앱에 전달하기위한 것이 아닙니다. 아이콘 또는 그리드보기에서 사용할 수있는 축소판입니다. 전체 크기의 사진은 명시 적으로 다른 위치를 요구하지 않는 한 (범용으로 지원되지 않는 기능) 카메라 앱이 촬영 한 모든 일반 필름 롤과 함께 저장됩니다. –

답변

0
package com.net.test; 

import java.awt.AlphaComposite; 
import java.awt.Graphics2D; 
import java.awt.RenderingHints; 
import java.awt.image.BufferedImage; 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.imageio.stream.ImageInputStream; 

import com.sun.image.codec.jpeg.ImageFormatException; 
import com.sun.image.codec.jpeg.JPEGCodec; 
import com.sun.image.codec.jpeg.JPEGEncodeParam; 
import com.sun.image.codec.jpeg.JPEGImageEncoder; 

public class TestImagesDpi { 


    public static void main(String[] args) throws ImageFormatException, IOException { 
     FileOutputStream fos = null; 

//  byte[] rawData = getRawBytesFromFile(""); // some code to read raw bytes from image file 
//  ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(rawData)); 
     BufferedImage images = ImageIO.read(new File("C:\\Users\\Rajesh\\Desktop\\richagangopadhyay217.jpg")); 
//  images.se 

     int type = images.getType() == 0? BufferedImage.TYPE_INT_ARGB : images.getType(); 

     images = resizeImageWithHint(images, type); 

     //  for (int i = 0; i < imageFiles.length; i++) { 
      fos = new FileOutputStream(new File("C:\\Users\\Rajesh\\Desktop\\test.jpg")); 
      JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos); 
      JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(images); 
      jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH); 
      jpegEncodeParam.setXDensity(600); 
      jpegEncodeParam.setYDensity(600); 
      jpegEncodeParam.setQuality(1.0f, true); 
      jpegEncoder.encode(images, jpegEncodeParam); 
      fos.close(); 
//  } 
    } 

    private static BufferedImage resizeImageWithHint(BufferedImage originalImage, int type){ 

     BufferedImage resizedImage = new BufferedImage(256, 256, type); 
     Graphics2D g = resizedImage.createGraphics(); 
     g.drawImage(originalImage, 0, 0, 256, 256, null); 
     g.dispose();  
     g.setComposite(AlphaComposite.Src); 

     g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
     RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
     g.setRenderingHint(RenderingHints.KEY_RENDERING, 
     RenderingHints.VALUE_RENDER_QUALITY); 
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
     RenderingHints.VALUE_ANTIALIAS_ON); 

     return resizedImage; 
     } 

    private static byte[] getRawBytesFromFile(String string) throws FileNotFoundException { 
     // TODO Auto-generated method stub 

     File file = new File("C:\\Users\\Rajesh\\Desktop\\richagangopadhyay217.jpg"); 

     FileInputStream fis = new FileInputStream(file); 
     //create FileInputStream which obtains input bytes from a file in a file system 
     //FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader. 

     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     byte[] buf = new byte[1024]; 
     try { 
      for (int readNum; (readNum = fis.read(buf)) != -1;) { 
       //Writes to this byte array output stream 
       bos.write(buf, 0, readNum); 
       System.out.println("read " + readNum + " bytes,"); 
      } 
     } catch (IOException ex) { 
//   Logger.getLogger(ConvertImage.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     byte[] bytes = bos.toByteArray(); 
     return bytes; 
    } 
} 
+1

더 많은 사용자가 무슨 일이 일어나고 있는지 이해할 수 있도록 코드를 설명하는 것이 좋습니다. – jazzurro