使用LoadImageFromFile函数从硬盘或其他数据载体加载一幅图像。
import win.ui;当然,我在aar的代码里面dll调用也试了更好调用约定为cdecl,但是加载图片的时候还是会无响应然后死机
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add(
button={cls="button";text="打开文件";left=433;top=76;right=625;bottom=122;z=2};
button2={cls="button";text="button2";left=434;top=132;right=626;bottom=178;z=4};
edit={cls="edit";text="edit";left=266;top=30;right=628;bottom=61;edge=1;z=1};
picturebox={cls="picturebox";left=90;top=206;right=400;bottom=436;notify=1;z=3}
)
/*}}*/
import console;
import fsys;
import fsys.dlg;
var dll = ..raw.loadDll("\res\ImageWizard.dll",,"cdcel");
ImageWizardStartUp = dll.api("ImageWizardStartUp","void()") ;
LoadImageFromFile = dll.api("LoadImageFromFile","INT(STRING FileName, pointer& Image, INT Index)");
console.open();
var filename;
var imgHandle;
mainForm.button.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button.text );
filename = fsys.dlg.open("所有文件|*.*");
mainForm.edit.text = filename;
ImageWizardStartUp();
console.log(filename)
}
mainForm.button2.oncommand = function(id,event){
console.log(LoadImageFromFile(filename,imgHandle,1))
}
mainForm.enableDpiScaling();
mainForm.show();
return win.loopMessage();
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add(
button={cls="button";text="打开文件";left=433;top=76;right=625;bottom=122;z=2};
button2={cls="button";text="button2";left=434;top=132;right=626;bottom=178;z=4};
edit={cls="edit";text="edit";left=266;top=30;right=628;bottom=61;edge=1;z=1};
picturebox={cls="picturebox";left=90;top=206;right=400;bottom=436;notify=1;z=3}
)
/*}}*/
import console;
import fsys;
import fsys.dlg;
//重点: 如果没这个打开load就会闪退
import win.ole;
SysAllocString_ = Oleaut32.api("SysAllocStringA","pointer(string psz)");
//原库dll函数声明
var dll = ..raw.loadDll("\res\ImageWizard.dll");
ImageWizardStartUp = dll.api("ImageWizardStartUp","void()") ;
LoadImageFromFile = dll.api("LoadImageFromFile","INT(pointer FileName, pointer& Image, INT Index)");
console.open();
var filename;
var imgHandle;
mainForm.button.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button.text );
filename = fsys.dlg.open("所有文件|*.*");
mainForm.edit.text = filename;
ImageWizardStartUp();
console.log(filename)
}
mainForm.button2.oncommand = function(id,event){
//路径有中文要进行转译先
p = SysAllocString_(string.fromto(filename,65001,936))
console.log(LoadImageFromFile(p,,0))
}
mainForm.enableDpiScaling();
mainForm.show();
return win.loopMessage();
import win.ui;显示:
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add(
button={cls="button";text="打开文件";left=433;top=76;right=625;bottom=122;z=2};
button2={cls="button";text="加载";left=434;top=132;right=626;bottom=178;z=4};
button3={cls="button";text="释放";left=431;top=413;right=623;bottom=459;z=5};
button4={cls="button";text="获取宽度";left=436;top=191;right=628;bottom=237;z=6};
edit={cls="edit";text="edit";left=266;top=30;right=628;bottom=61;edge=1;z=1};
picturebox={cls="picturebox";left=55;top=125;right=365;bottom=355;notify=1;z=3}
)
/*}}*/
import console;
import fsys;
import fsys.dlg;
//重点: 如果没这个打开load就会闪退
import win.ole;
SysAllocString_ = Oleaut32.api("SysAllocStringA","pointer(string psz)");
Ok = 0
LoadingError = 1
ImageNotInitialized = 2
InvalidParameter = 3
BitCountNotSupported = 4
UnknownImageHandle = 5
AccessDenied = 6
UnrecognizedSignature = 7
OutOfMemory = 8
GdiplusNotInitialized = 9
ValueOverflow = 10
UnknownImageFormat = 11
Win32Error = 12
status = {
[0] = "ok";
[1] = "LoadingError";
[2] = "ImageNotInitialized";
[3] = "InvalidParameter";
[4] = "BitCountNotSupported";
[5] = "UnknownImageHandle";
[6] = "AccessDenied";
[7] = "UnrecognizedSignature";
[8] = "OutOfMemory";
[9] = "GdiplusNotInitialized";
[10] = "ValueOverflow";
[11] = "UnknownImageFormat";
[12] = "Win32Error";
}
//原库dll函数声明
var dll = ..raw.loadDll("\res\ImageWizard.dll");
ImageWizardStartUp = dll.api("ImageWizardStartUp","void()") ;
ImageWizardShutDown = dll.api("ImageWizardShutDown","void()") ;
//DisposeImage = dll.api("DisposeImage","INT(pointer Image)") ;
LoadImageFromFile = dll.api("LoadImageFromFile","INT(pointer FileName, pointer& Image, INT Index)");
GetImageWidth = dll.api("GetImageWidth","INT(pointer Image, int& ImageWidth");
console.open();
var filename;
var imgHandle;
mainForm.button.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button.text );
filename = fsys.dlg.open("所有文件|*.*");
mainForm.edit.text = filename;
ImageWizardStartUp();
console.log(filename)
}
mainForm.button2.oncommand = function(id,event){
//路径有中文要进行转译先
p = SysAllocString_(string.fromto(filename,65001,936))
var ret,imgHandle = LoadImageFromFile(p,,0);
console.log(status[ret],imgHandle)
::SysFreeString(p);//释放
}
mainForm.button3.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button3.text );
var ret = dll.DisposeImage({pointer handle = imgHandle});
console.log(status[ret])
ImageWizardShutDown();
}
mainForm.button4.oncommand = function(id,event){
//mainForm.msgbox( mainForm.button4.text );
var ret,width = GetImageWidth(imgHandle,0);
console.log(status[ret],width)
}
mainForm.enableDpiScaling();
mainForm.show();
return win.loopMessage();