Android:点击新图片,压缩并上传到服务器

时间:2016-07-02 06:53:46

标签: java android image-processing picasso android-camera-intent

哪个是完成任务的最佳方式? 回答这些问题中的任何一个都会这样做 -

1)如何压缩图像而不会失去清晰度?

2)如何在我们的应用程序中以低分辨率启动相机?

我知道如何通过CameraIntent点击图像,或者通过应用程序中的图库选择图像,并将其上传到服务器。 但是,如果高像素密度的相机(我的13MP手机的相机点击3MB图像)点击图像可能太大,但我们无法上传。我需要的大小小于300KB,最好是大约150KB到200KB,而不会失去pic的清晰度。我们在Android中有这个库吗? 这些照片将是手写的文字。 由于这是不可能的,我已经尝试手动将相机的分辨率调低到2MP或VGA,即使那时图片也足够清晰。

或者,如果我们以低分辨率启动相机,那也可以。

2 个答案:

答案 0 :(得分:3)

首先选择您的路径并致电功能

<img src="user_608.png" onerror="this.src='user_default.png';">

mImageNewPath是Comress图像的路径或压缩图像的新图像而不会失去质量

功能在不降低质量的情况下缩小尺寸

String   mImageNewPath=compressImage(imageOldPath);

答案 1 :(得分:0)

使用以下功能将任意图像缩放到任意尺寸

public static BufferedImage getScaledImage(Image srcImg, int w, int h) {
        BufferedImage resizedImg = new BufferedImage(w, h, Transparency.TRANSLUCENT);
        Graphics2D g2 = resizedImg.createGraphics();
        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g2.drawImage(srcImg, 0, 0, w, h, null);
        g2.dispose();
        return resizedImg;
    }

要调用该函数,请使用以下代码:

File file = new File(path);
image = ImageIO.read(file);
newImage = getScaledImage(image, int width, int height);
File outputfile = new File("background.png");
ImageIO.write(newImage, "png", outputfile);