图像捕获并上传到Android中的FTP

时间:2013-07-15 01:30:42

标签: android image ftp

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

我必须在我的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);

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

任何帮助都将不胜感激。

P.S。抱歉我的英语不好!

修改

感谢Alamri。 再一次,伙计,谢谢你!

1 个答案:

答案 0 :(得分: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);