plist图片还原出小图片遇到的问题

疑问:将一个大图片还原为多个小图片的图片处理时,为什么会出现两种不同的结果?
背景:cocos2dx游戏中常常使用plist文件来对图片资源进行管理,通常采取的策略是:将所有的小图拼接到一张大的图片中,大图与一个plist文件相对应。当游戏中需要使用小图片时,只需要先加载plist文件,然后再指定小图的名称,即可正常显示小图片。
目的:将一个大图通过程序还原为许多与名称对应的小图。
问题:处理程序将一个大的png图片处理成许多小的图片时,会出现两种不同的结果,分别为:
预期结果:一个名称对应一个完整的图片,如下:

非预期结果:一个名称对应一个不完整的图片,如下:

如何将非预期的结果转为预期的结果?PS:两种不同结果使用的是同一个图片处理程序。PPS:论坛上方提供的图片上传功能太差了,不能直接复制、粘贴,折腾好久没有上传成功,只能把图片作为附件放在最下方了,哎!谢谢大家的回复。

那要看你的处理程序有什么问题了,比如旋转有没有处理,可对比下两个plist文件看下格式数据有什么不同

网上有分解plist的python脚本,自己搜下

主要的影响因素,是坐标,尺寸和旋转。读几组数据出来分析下应该就ok。

我写过这样一个工具

plist解析工具:Anti_TexturePacker

http://blog.csdn.net/jackystudio/article/details/12867863

我将大图还原为小图,使用的正是分解plist的python脚本

谢谢,我用你提供的工作,尝试一下。

你好,已经下载你提供的程序,但是不能正常运行:一打开就报错,看了你在CSDN下方的回复,好像是不支持Windows7 64位。只能麻烦你帮我转换一下了,求你的邮箱,谢谢。

这头像比之前的挫死了

使用cocos2dx自己的功能就能实现
void ParsePlist::parsePlist(const char *plistName)
{
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(plistName);

std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename(plistName);
CCDictionary *dict = CCDictionary::createWithContentsOfFileThreadSafe(path.c_str());
CCDictionary *framesDict = (CCDictionary*)dict->objectForKey("frames");
CCDictElement* pElement = NULL;

std::string writePath = CCFileUtils::sharedFileUtils()->getWritablePath();

CCDICT_FOREACH(framesDict, pElement)
{

// CCDictionary* frameDict = (CCDictionary*)pElement->getObject();
std::string spriteFrameName = pElement->getStrKey();
CCSprite* spr = CCSprite::createWithSpriteFrameName(spriteFrameName.c_str());
spr->setAnchorPoint(ccp(0, 0));
CCRenderTexture* render = CCRenderTexture::create(spr->getContentSize().width, spr->getContentSize().height);
render->begin();
spr->visit();
render->end();
std::string filePath = writePath+spriteFrameName;
render->saveToFile(filePath.c_str());
}
}

怎样怎样:6::6::6:

你下那个1.3版本的。64位也是兼容的。我试过了=。=

现在真心没时间改那个程序了。。。

后面有时间我再改一版qt的。。。

感谢,我试一下。

感谢,不好意思,我没有明白具体怎样做,能否写详细一些?

你好,软件可以使用。但是裁剪出来的图片乱七八糟的。就跟我问题中提到的第二张图一样,请问有解决办法么?