Java AmazonAWS-从web下载图像并对其进行操作

Java AmazonAWS-从web下载图像并对其进行操作,java,image-processing,amazon-web-services,amazon,Java,Image Processing,Amazon Web Services,Amazon,我想建立一个小项目 我该怎么做: 1) 自动将RGB图像从已知的internet地址下载到amazon AWS 2) 将图像转换为灰度(最终将执行更高级的图像处理) 3) 将灰度图像存储在amazon AWS中 4) 能够在web浏览器中查看/下载灰度图像 我知道的编程语言是matlab和基本java(OOP大学课程) 有分步指南吗 从哪里开始?请阅读java.net.HttpURLConnection的文档,了解如何使用java下载文件 然后阅读其中解释了如何下载和上传到AmazonS3。下面

我想建立一个小项目

我该怎么做:

1) 自动将RGB图像从已知的internet地址下载到amazon AWS

2) 将图像转换为灰度(最终将执行更高级的图像处理)

3) 将灰度图像存储在amazon AWS中

4) 能够在web浏览器中查看/下载灰度图像

我知道的编程语言是matlab和基本java(OOP大学课程)

有分步指南吗


从哪里开始?

请阅读java.net.HttpURLConnection的文档,了解如何使用java下载文件

然后阅读其中解释了如何下载和上传到AmazonS3。下面是一个来自Java的S3实例:

//---------------------------------------------------------------------     
// Amazon S3
//---------------------------------------------------------------------     
class S3 extends AmazonS3Client
 {final String bucket;
  S3(String u, String p, String Bucket)
   {super(new BasicAWSCredentials(u, p));
    bucket = Bucket;
   }
  boolean put(String k, String v)      
   {try 
     {final ByteArrayInputStream b = new ByteArrayInputStream(v.toString().getBytes());
      putObject(bucket, k, b, new ObjectMetadata());
      setObjectAcl(bucket, k, CannedAccessControlList.PublicRead);  // Has to be here to allow change to reduced redundancy
      changeObjectStorageClass(bucket, k, StorageClass.ReducedRedundancy);
      setObjectAcl(bucket, k, CannedAccessControlList.PublicRead);  // Has to be repeated because it is now a new object again
      return true; 
     }
    catch(Exception e) {log("Cannot put "+bucket+"/"+k+" to S3 because "+e);}
    return false; 
   }
  String get(String k) 
   {try 
     {final S3Object f = getObject(bucket, k);
      final BufferedInputStream i = new BufferedInputStream(f.getObjectContent());  
      final StringBuilder s = new StringBuilder(); 
      final byte[]b = new byte[1024];
      for(int n = i.read(b); n != -1; n = i.read(b)) {s.append(new String(b, 0, n));}
      return s.toString(); 
     }
    catch(Exception e) {log("Cannot get "+bucket+"/"+k+" from S3 because "+e);}
    return null; 
   }
  String[]list(String d) 
   {try 
     {final ObjectListing l = listObjects(bucket, d);
      final List<S3ObjectSummary> L = l.getObjectSummaries(); 
      final int n = L.size();
      final String[]s = new String[n];  
      for(int i = 0; i < n; ++i)
       {final S3ObjectSummary k = L.get(i);
        s[i] = k.getKey();
       } 
      return s; 
     }
    catch(Exception e) {log("Cannot list "+bucket+"/"+d+" on S3 because "+e);}
    return new String[]{}; 
   }
 }
/---------------------------------------------------------------------------------------
//亚马逊S3
//---------------------------------------------------------------------     
类S3扩展了AmazonS3Client
{最终字符串存储桶;
S3(u串、p串、桶串)
{super(新的BasicAWSCredentials(u,p));
铲斗=铲斗;
}
布尔put(字符串k、字符串v)
{试试看
{final ByteArrayInputStream b=新的ByteArrayInputStream(v.toString().getBytes());
putObject(bucket、k、b、newObjectMetadata());
setObjectAcl(bucket,k,cannedAccessController.PublicRead);//必须在此处才能允许更改以减少冗余
changeObjectStorageClass(bucket、k、StorageClass.ReducedRedundance);
setObjectAcl(bucket,k,cannedAccessController.PublicRead);//必须重复,因为它现在又是一个新对象
返回true;
}
catch(异常e){log(“无法将“+bucket+”/“+k+”放入S3,因为“+e”);}
返回false;
}
字符串获取(字符串k)
{试试看
{final S3Object f=getObject(bucket,k);
final BufferedInputStream i=新的BufferedInputStream(f.getObjectContent());
最终StringBuilder s=新StringBuilder();
最终字节[]b=新字节[1024];
对于(int n=i.read(b);n!=-1;n=i.read(b)){s.append(新字符串(b,0,n));}
返回s.toString();
}
catch(异常e){log(“无法从S3获取“+bucket+”/“+k+”,因为“+e”);}
返回null;
}
字符串[]列表(字符串d)
{试试看
{final ObjectListing l=listObjects(bucket,d);
最终列表L=L.getObjectSummaries();
最终整数n=L.大小();
最终字符串[]s=新字符串[n];
对于(int i=0;i
}


一旦你在Amazon S3上有了图像,你就可以公开显示该文件,从而可以在任何web浏览器中显示。

我的建议是,你开始处理任务1,然后当你有真正的问题时再回来。