Android 图像分辨率

Android 图像分辨率,android,android-camera,android-image,android-resolution,Android,Android Camera,Android Image,Android Resolution,我有一个相机应用程序,我在其中拍摄图像并将其存储在SD卡中 当我检查存储的图像的分辨率时,发现它是120X160像素 但是,相机拍摄的正常图像是640X480像素 我不想降低决心。你能解释一下为什么会这样吗 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub

我有一个相机应用程序,我在其中拍摄图像并将其存储在SD卡中

当我检查存储的图像的分辨率时,发现它是120X160像素

但是,相机拍摄的正常图像是640X480像素

我不想降低决心。你能解释一下为什么会这样吗

@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();
            }
        }
}       
我必须创建自己的相机活动吗??我是初学者。。所以请帮助

包com.net.test;
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;
    }
}
导入java.awt.AlphaComposite; 导入java.awt.Graphics2D; 导入java.awt.RenderingHints; 导入java.awt.image.buffereImage; 导入java.io.ByteArrayInputStream; 导入java.io.ByteArrayOutputStream; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入javax.imageio.imageio; 导入javax.imageio.stream.ImageInputStream; 导入com.sun.image.codec.jpeg.ImageFormatException; 导入com.sun.image.codec.jpeg.jpeg编解码器; 导入com.sun.image.codec.jpeg.JPEGEncodeParam; 导入com.sun.image.codec.jpeg.jpeg图像编码器; 公共类TestImagesDpi{ 公共静态void main(字符串[]args)引发ImageFormatException、IOException{ FileOutputStream=null; //byte[]rawData=getRawBytesFromFile(“”;//从图像文件中读取原始字节的一些代码 //ImageInputStream iis=ImageIO.createImageInputStream(新的ByteArrayInputStream(rawData)); BuffereImage images=ImageIO.read(新文件(“C:\\Users\\Rajesh\\Desktop\\richagangopadhyay217.jpg”); //images.se int type=images.getType()=0?buffereImage.type_int_ARGB:images.getType(); images=resizeImageWithHint(图像,类型); //对于(int i=0;i
您的问题的解决方案可以找到“数据”额外的目的不是将捕获的图像传送到您的应用程序;它只是一个缩略图,可以用作图标或网格视图。全尺寸照片与相机应用程序拍摄的所有常规胶卷一起存储,除非您明确要求不同的位置(不是普遍支持的功能)。最好解释一下您的代码,以便更多用户能够理解发生了什么。