2016-02-26 47 views
1

我试图使用share()方法,其中包括图像,但我无法为图像提供正确的路径。我应该在哪里放置图像文件,以及路径是什么(放入默认包并尝试“jar:///myimage.png”不起作用),为什么没有明确记录?cn1 - 获取共享图像的文件路径()

回答

2

图像可以被存储在存储这是继窗 C路线:\用户\ userName.cn1

和图像可以通过使用以下代码从默认

InputStream is = Storage.getInstance().createInputStream("tizbn.JPG"); 
EncodedImage i = EncodedImage.create(is, is.available()); 

加载图像被读文件夹

Image i =EncodedImage.create("/tizbn.png"); 

导入图像从主题

EncodedImage current = (EncodedImage) fetchResourceFile().getImage("tizbn.png"); 
+0

好的,我看到这里有一个重大的误解。我有一个图像,我想要与应用程序(应用程序徽标)打包,并希望它与共享文本共享。我不知道如何引用应用程序中打包的文件的路径。 – ygesher

+0

你可以内置在主题以及应用程序的默认文件夹,并可以像上面提到的图像 – tizbn

0

share API适用于https://www.codenameone.com/javadoc/com/codename1/io/FileSystemStorage.html[FileSystemStorage]而不适用于https://www.codenameone.com/javadoc/com/codename1/io/Storage.html[Storage]

您需要将文件保存到始终为绝对路径的文件系统路径中,我们建议使用应用程序主页来存储文件。在developer guide section on the ShareButton有一个样本覆盖了这个:

Form hi = new Form("ShareButton"); 
ShareButton sb = new ShareButton(); 
sb.setText("Share Screenshot"); 
hi.add(sb); 

Image screenshot = Image.createImage(hi.getWidth(), hi.getHeight()); 
hi.revalidate(); 
hi.setVisible(true); 
hi.paintComponent(screenshot.getGraphics(), true); 

String imageFile = FileSystemStorage.getInstance().getAppHomePath() + "screenshot.png"; 
try(OutputStream os = FileSystemStorage.getInstance().openOutputStream(imageFile)) { 
    ImageIO.getImageIO().save(screenshot, os, ImageIO.FORMAT_PNG, 1); 
} catch(IOException err) { 
    Log.e(err); 
} 
sb.setImageToShare(imageFile, "image/png"); 
+0

有没有办法从文件夹中拉出文件? – ygesher

+0

您可以从JAR获取文件,但需要将其保存到FileSystem以在共享代码中使用它。将文件放在src目录的根目录下,并用'Display.getInstance()。getResourceAsStream(“/ myFileName”)打开它;'然后不使用Save并且整个截图过程只使用'Util.copy(inputStream,outputStream );'。 –