求助:python脚本中使用PIL库,嵌入C++中后PIL的save方法出问题。

崖高人远 2014-06-10 12:02:29
python脚本代码:

#encoding=utf-8
from PIL import Image
import os,sys
def toPNG(infile):
f,e = os.path.splitext(infile)
print f,e
outfile = f + ".png"
print "outfile:",outfile
if infile != outfile:
print "enter"
try:
print "enter process"
print "infile:",infile
im = Image.open(infile)
if(im):
print "open success"
print "outfile:",outfile
im.save(outfile)
print "over"
except IOError:
print "cannot convert",infile

#toPNG("C:\\123.bmp")

C++调用代码:

int Test_VeryHighLevelEmbeding(int argc,char**argv)
{
//Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc,argv);//解决Python TkinterGUI脚本嵌入的问题。这个很重要,这是花了好几个小时才找到的办法。
PyRun_SimpleString("import os,sys\n"
"from PIL import Image\n"
"from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
PyRun_SimpleString("sys.path.append('./')");
PyObject * pstr, * pmod, * pdict;
pmod = PyImport_ImportModule("bmp2png1Ed");//success
pdict = PyModule_GetDict(pmod); //不知道什么意思,但好像又是必须的
char * path = "C:\\123.bmp";
PyObject * pPath;
pPath = Py_BuildValue("s",path);
PyObject_SetAttrString(pmod,"X",pPath);
PyRun_String("toPNG(X)",Py_file_input,pdict,pdict);
Py_DECREF(pmod);

Py_Finalize();
return 1;
}

辅助调试信息:

明明Image.open()都有返回值im了,但是save方法执行后就没有执行:print "over",图片也没有保存下来。
如果单独的在wingide中给这个函数传参数并运行,那么就会正常的保存转换的图片文件。
请教下:这是什么原因?
...全文
495 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
崖高人远 2015-11-06
  • 打赏
  • 举报
回复
问题没解决,结贴。
崖高人远 2014-06-10
  • 打赏
  • 举报
回复
工程类型为:win32 console
崖高人远 2014-06-10
  • 打赏
  • 举报
回复
python版本:2.7.6 ,32bit C++ ide:vs2010
崖高人远 2014-06-10
  • 打赏
  • 举报
回复
引用 3 楼 angel_su 的回复:
换vs2008...
额,是吗?非得换ide不可?
angel_su 2014-06-10
  • 打赏
  • 举报
回复
换vs2008...

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧