我想拍一张照片并用特定名称和压缩尺寸(低质量)保存。我该怎么做?在Android设备和模拟器上使用一些随机名称保存图像。
String filePath = Capture.capturePhoto();
if(filePath != null) {
try {
ImageIO io = ImageIO.getImageIO();
io.saveAndKeepAspect(filePath,
FileSystemStorage.getInstance().getAppHomePath()+"testImage.jpg",
ImageIO.FORMAT_JPEG, 100, 100, 0.1f, true, false);
InputStream inputStream = FileSystemStorage.getInstance().openInputStream(FileSystemStorage.getInstance().
getAppHomePath()+"testImage.jpg");
Image readImage = Image.createImage(inputStream);
Util.cleanup(inputStream);
imgViewer.setImage(readImage);
} catch(IOException err) {
err.printStackTrace();
}
hi.add(imgViewer);
hi.show();
答案 0 :(得分:2)
我做过类似的事情,但我使用了存储,尽管我为你添加了一个关于FileSystemStorage的评论。 这些行在outputStream中以i声明的名称创建文件。
//OutputStream os = FileSystemStorage.getInstance().openOutputStream(fileName);
OutputStream os = Storage.getInstance().createOutputStream(fileName);
ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
os.close();
编辑:下面是一个例子,你的代码与我提供的行混合在一起,它在我的模拟器上工作正常。
String filePath = Capture.capturePhoto();
if (filePath != null) {
try {
Image img = Image.createImage(filePath);
OutputStream os = FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + "xyz.jpg");
ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
os.close();
}
catch (Exception e) {
e.printStackTrace();
}
}