Java AmazonAWS-从web下载图像并对其进行操作
我想建立一个小项目 我该怎么做: 1) 自动将RGB图像从已知的internet地址下载到amazon AWS 2) 将图像转换为灰度(最终将执行更高级的图像处理) 3) 将灰度图像存储在amazon AWS中 4) 能够在web浏览器中查看/下载灰度图像 我知道的编程语言是matlab和基本java(OOP大学课程) 有分步指南吗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。下面
从哪里开始?请阅读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,然后当你有真正的问题时再回来。