我想建立一个小项目。
我这样做:
1) 自动从已知互联网地址下载 RGB 图像到亚马逊 AWS。
2)将图像转换为灰度(最终会做更高级的图像处理)。
3)将灰度图像存储在亚马逊AWS中。
4) 能够在网络浏览器中查看/下载灰度图像。
我知道的编程语言是 matlab 和基本的 java(OOP 大学课程)。
有分步指南吗?
我应该从哪里开始?
我想建立一个小项目。
我这样做:
1) 自动从已知互联网地址下载 RGB 图像到亚马逊 AWS。
2)将图像转换为灰度(最终会做更高级的图像处理)。
3)将灰度图像存储在亚马逊AWS中。
4) 能够在网络浏览器中查看/下载灰度图像。
我知道的编程语言是 matlab 和基本的 java(OOP 大学课程)。
有分步指南吗?
我应该从哪里开始?
请阅读 java.net.HttpURLConnection 的文档以了解如何使用 Java 下载文件。
然后阅读http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html,其中介绍了如何下载和上传到 Amazon S3。以下是来自 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[]{};
}
}
}
在 Amazon S3 上获得图像后,您可以使文件公开可见,从而可以在任何 Web 浏览器中显示。