代号一:将图像保存到存储并创建小的圆形预览
Codename One: Save Image to Storage and create small rounded preview
我目前遇到图像问题:
1) 我无法将图像保存到存储中,因为不支持将其直接存储到存储中。我希望用户能够使用相机拍摄照片,然后创建的照片必须保存在某个地方,以便我稍后可以再次检索它。
你能告诉我怎么做吗
a) 保存图片
b) 如何取回
我在 Whosebug 中找到了 Shai 制作的代码片段,其中另一个用户也询问如何将图像保存到存储空间。
InputStream stream = FileSystemStorage.getInstance().openInputStream(i);
OutputStream out = Storage.getInstance().createOutputStream("MyImage");
Util.copy(stream, out);
Util.cleanup(stream);
Util.cleanup(out);
但是我不明白。我怎样才能从中得到一个 "Image" 对象? "Image" 对象究竟是如何存储在那里的?你能在这里给我一个完整的例子吗?这对我的应用来说真的很重要。
2)
这个问题可能很简单,但我找不到答案。我想重新缩放拍摄的相机照片并在其周围制作一个圆形蒙版。我试过这个:
Image capturedImage = Image.createImage(Capture.capturePhoto());
int width = capturedImage.getWidth();
int hight = capturedImage.getHeight();
Image rounded = Image.createImage(width, capturedImage.getHeight(), 0xff000000);
Graphics gr = rounded.getGraphics();
gr.setColor(0xffffff);
gr.fillArc(0, 0, width, hight, 0, 360);
Object mask = rounded.createMask();
Image ImagePreview = capturedImage.applyMask(mask);
但是没有成功,ImagePreview 甚至不会出现。无论如何,此预览都是原始大小,之后我如何将其调整为小预览以供用户使用?
提前致谢。
编辑:
我试过以下方法保存图片:
Image capturedImage = Image.createImage(Capture.capturePhoto());
String imageFile = FileSystemStorage.getInstance().getAppHomePath() + "test.png";
try(OutputStream os = FileSystemStorage.getInstance().openOutputStream(imageFile)) {
ImageIO.getImageIO().save(capturedImage, os, ImageIO.FORMAT_PNG, 1);
} catch(IOException err) {
Log.e(err);
}
songList.setImage(imageFile);
为了稍后检索它,我尝试了:
if(songList.getImage() != null){
try {
Image img = Image.createImage(Storage.getInstance().createInputStream(songList.getImage()));
Label test = new Label();
test.setIcon(img);
listCont.add(test);
} catch(Exception ex){
Dialog.show("Error", "Error during image loading: " + ex, "OK", null);
}
}
但是我得到一个错误,说他找不到文件。 (设备模拟器)。我做错了什么吗?
使用:
Image img = Image.createImage(Storgage.getInstance().createInputStream("ImageName"));
图像预览是图像而不是组件,因此您将看不到任何内容,除非您将图像放在某种组件中进行显示。
这里是存储和加载图像的完整工作示例,供遇到问题的任何人使用:
正在保存图像:
String filePath = Capture.capturePhoto();
if (filePath != null) {
try {
String pathToBeStored = FileSystemStorage.getInstance().getAppHomePath() + System.currentTimeMillis() + ".jpg");
Image img = Image.createImage(filePath);
OutputStream os = FileSystemStorage.getInstance().openOutputStream(pathToBeStored );
ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
os.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
正在加载图片:
if(pathToImage != null){
try {
Image img = Image.createImage(FileSystemStorage.getInstance().openInputStream(pathToImage));
} catch(Exception ex){
Dialog.show("Error", "Error during image loading: " + ex, "OK", null);
}
}
我目前遇到图像问题:
1) 我无法将图像保存到存储中,因为不支持将其直接存储到存储中。我希望用户能够使用相机拍摄照片,然后创建的照片必须保存在某个地方,以便我稍后可以再次检索它。
你能告诉我怎么做吗 a) 保存图片 b) 如何取回
我在 Whosebug 中找到了 Shai 制作的代码片段,其中另一个用户也询问如何将图像保存到存储空间。
InputStream stream = FileSystemStorage.getInstance().openInputStream(i);
OutputStream out = Storage.getInstance().createOutputStream("MyImage");
Util.copy(stream, out);
Util.cleanup(stream);
Util.cleanup(out);
但是我不明白。我怎样才能从中得到一个 "Image" 对象? "Image" 对象究竟是如何存储在那里的?你能在这里给我一个完整的例子吗?这对我的应用来说真的很重要。
2)
这个问题可能很简单,但我找不到答案。我想重新缩放拍摄的相机照片并在其周围制作一个圆形蒙版。我试过这个:
Image capturedImage = Image.createImage(Capture.capturePhoto());
int width = capturedImage.getWidth();
int hight = capturedImage.getHeight();
Image rounded = Image.createImage(width, capturedImage.getHeight(), 0xff000000);
Graphics gr = rounded.getGraphics();
gr.setColor(0xffffff);
gr.fillArc(0, 0, width, hight, 0, 360);
Object mask = rounded.createMask();
Image ImagePreview = capturedImage.applyMask(mask);
但是没有成功,ImagePreview 甚至不会出现。无论如何,此预览都是原始大小,之后我如何将其调整为小预览以供用户使用?
提前致谢。
编辑:
我试过以下方法保存图片:
Image capturedImage = Image.createImage(Capture.capturePhoto());
String imageFile = FileSystemStorage.getInstance().getAppHomePath() + "test.png";
try(OutputStream os = FileSystemStorage.getInstance().openOutputStream(imageFile)) {
ImageIO.getImageIO().save(capturedImage, os, ImageIO.FORMAT_PNG, 1);
} catch(IOException err) {
Log.e(err);
}
songList.setImage(imageFile);
为了稍后检索它,我尝试了:
if(songList.getImage() != null){
try {
Image img = Image.createImage(Storage.getInstance().createInputStream(songList.getImage()));
Label test = new Label();
test.setIcon(img);
listCont.add(test);
} catch(Exception ex){
Dialog.show("Error", "Error during image loading: " + ex, "OK", null);
}
}
但是我得到一个错误,说他找不到文件。 (设备模拟器)。我做错了什么吗?
使用:
Image img = Image.createImage(Storgage.getInstance().createInputStream("ImageName"));
图像预览是图像而不是组件,因此您将看不到任何内容,除非您将图像放在某种组件中进行显示。
这里是存储和加载图像的完整工作示例,供遇到问题的任何人使用:
正在保存图像:
String filePath = Capture.capturePhoto();
if (filePath != null) {
try {
String pathToBeStored = FileSystemStorage.getInstance().getAppHomePath() + System.currentTimeMillis() + ".jpg");
Image img = Image.createImage(filePath);
OutputStream os = FileSystemStorage.getInstance().openOutputStream(pathToBeStored );
ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
os.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
正在加载图片:
if(pathToImage != null){
try {
Image img = Image.createImage(FileSystemStorage.getInstance().openInputStream(pathToImage));
} catch(Exception ex){
Dialog.show("Error", "Error during image loading: " + ex, "OK", null);
}
}