我有一个场景需要将图像从 Zip::OutputStream.write_buffer(::StringIO.new(''), Zip::TraditionalEncrypter.new('password')) do |out|
out.put_next_entry("my_file.txt")
out.write my_data
end.string
#error: **NameError (uninitialized constant Zip::TraditionalEncrypter):**
标记保存到本地文件。代码确实将图像保存到文件中,但我得到一个空图像,我知道它听起来很简单,但我是NS新手,无法在谷歌上找到任何东西,也许有人知道为什么?
XML:
<Image />
JS:
<page>
<image src="pic.png" id="img"/>
</page>
答案 0 :(得分:1)
由于在完全加载之前保存图像,您可能会获得空图像。尝试在完全加载后保存图像,如下面的代码段所示。
要在图片加载后保存图片,我们正在使用图片的loaded
事件和isLoading
属性。
<强> XML:强>
<page>
<image src="pic.png" loaded="onImageLoaded" id="img"/>
</page>
<强> TS:强>
onImageLoaded(args) {
console.log(args.eventName);
console.log(args.object);
var img = args.object;
console.log("img.isLoading: " + img.isLoading);
console.log("img.isLoaded: " + img.isLoaded);
if(img.isLoading){
img.on("isLoadingChange", function (args) {
console.log("isloading",args.value);
console.log("isloaded",args.object.isLoaded);
let img = args.object;
let path = fs.path.join(fs.knownFolders.documents().path, "pic.png");
let src = ImageSource.fromNativeSource(img);
let saved = src.saveToFile(path, "png");
});
}else if(!img.isLoading&&img.isLoaded){
let path = fs.path.join(fs.knownFolders.documents().path, "pic.png");
let src = ImageSource.fromNativeSource(img);
let saved = src.saveToFile(path, "png");
}else{
console.log("image loading failed");
}
}