0

我面临一个我自己无法解决的问题。

我必须在我的 android 应用程序中捕获图像,然后将该图像上传到 FTP 服务器。当然,我必须在发送到 FTP 之前调整它的大小,因为 2MB 绝对是不可接受的大小:)

我成功地拍照,获取它的路径并以全尺寸上传。

这就是我将其上传到服务器的方式。

File file = new File(pathOfTheImage);
String testName =System.currentTimeMillis()+file.getName();
fis = new FileInputStream(file);
// Upload file to the ftp server
result = client.storeFile(testName, fis);

此时是否可以调整图像大小或压缩图像以减小其大小,然后将其上传到服务器?

任何帮助,将不胜感激。

PS对不起我的英语不好!

编辑:

感谢 Alamri 解决了。再来一次,大佬,谢谢!!!

4

1 回答 1

0

在我的应用程序中,我在上传图像之前使用了这个:
1-调整大小、缩放和解码位图

private Bitmap decodeFile(File f) {
    try {

        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        final int REQUIRED_SIZE=450;

        int scale=1;
        while(o.outWidth/scale/2>=REQUIRED_SIZE && o.outHeight/scale/2>=REQUIRED_SIZE)
            scale*=2;

        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;
        Bitmap bit1 = BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
        return bit1;
    } catch (FileNotFoundException e) {}
    return null;
}

2-现在让我们保存调整大小的位图:

private void ImageResizer(Bitmap bitmap) {
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/Pic");    
    if(!myDir.exists()) myDir.mkdirs();
    String fname = "resized.im";
    File file = new File (myDir, fname);
    if (file.exists()){
        file.delete();
        SaveResized(file, bitmap);
    } else {
        SaveResized(file, bitmap);
    }
}

private void SaveResized(File file, Bitmap bitmap) {
    try {
           FileOutputStream out = new FileOutputStream(file);
           bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
           out.flush();
           out.close();
    } catch (Exception e) {
           e.printStackTrace();
    }
}

保存调整大小、缩放的图像后。使用您的代码上传它:

String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/Pic/resized.im");
    String testName =System.currentTimeMillis()+file.getName();
    fis = new FileInputStream(file);
    // Upload file to the ftp server
    result = client.storeFile(testName, fis);
于 2013-07-15T01:48:08.893 回答