【问题标题】:Image capture and upload to FTP in Android在 Android 中捕获图像并上传到 FTP
【发布时间】:2013-07-15 01:30:42
【问题描述】:

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

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

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

任何帮助将不胜感激。

附:对不起我的英语不好!

编辑:

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

【问题讨论】:

  • 你的英语很好。查看*.com/questions/10413659/…。希望对您有所帮助。
  • @Yatin Saraiya 感谢您的(快速)回答!我的问题是,此时我只有(全尺寸)图像的路径。最好的做法是什么?很抱歉有这么多问题,但这确实是我长期努力解决的问题,不幸的是,我没有成功。
  • 您需要下载图像以重新调整大小或压缩它。上传到服务器后可以删除。

标签: android image ftp


【解决方案1】:

在我的应用程序中,我在上传图片之前使用了这个:
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);

【讨论】:

  • 伙计,我不知道该怎么感谢你!!!!!!!!!!你救了我,我不知道该怎么感谢你!谢谢你,一百万次!!!
  • 没问题,但是不要忘记更改保存的图像扩展名,我使用.im,您可以使用JPG,PNG ....:)。
  • @Jovan 不客气,另一个建议.. 不使用 FTP 不安全.. 使用多次上传。
  • 是的,当然,但这只是我试图做这么多小时的事情,我更关注图像大小而不是更重要的事情:)
最近更新 更多