我用的是一个万能转换法,原理是先用CCSprite加载.pvr.ccz,然后把它绘制到一个CCRenderTexture上,然后再保存到文件里。这方法其实不只.pvr.ccz文件,其他所有能被cocos2dx直接加载的文件都可以用这种转换。有个弊端就是可能跟源文件数据稍有些差异(我这个就是看起来有点白边)。

用法是:比如有个文件夹叫Image,里面有个文件叫1.pvr.ccz。把Image文件夹拖拽到PngConverter.exe图标上。然后会在Image的旁边生成一个文件夹叫Image_png(里面有个文件叫1.png)

注意:目录不能带中文!!!!

生成的png文件名字不全的bug已经修正。

点击下载

最近发现有些不道德行为,转载请注明出处:http://www.cnblogs.com/mrblue/p/3420189.html

附上关键源码

bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
} CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", ); // position the label on the center of the screen
pLabel->setPosition(ccp(origin.x + visibleSize.width/,
origin.y + visibleSize.height - pLabel->getContentSize().height));
this->addChild(pLabel, ); {//convert
const char* pszSuffix = ".pvr.ccz"; int nStartPos = -;
while ( nStartPos=g_Param.find('\\',nStartPos+),-!=nStartPos )
{
g_Param.replace(nStartPos,,"/");
} std::string strFileFilter = g_Param+"/*"+pszSuffix; _finddata_t fileDir;
long lfDir; if((lfDir = _findfirst(strFileFilter.c_str(),&fileDir))==-1l)
{
char szMsg[] = {};
sprintf(szMsg,"Please drag a folder which contains \"%s\" files onto this application's icon" ,pszSuffix);
pLabel->setString(szMsg);
}
else
{
std::string strSaveFolderPath = g_Param+"_png/"; BOOL ret = CreateDirectoryA(strSaveFolderPath.c_str(), NULL);
if (!ret && ERROR_ALREADY_EXISTS != GetLastError())
{
CC_ASSERT(false);
} int nFileNum = ;
do
{
std::string strFileName = fileDir.name;
std::string strFilePath = g_Param+'/'+strFileName; CCSprite *img = CCSprite::create(strFilePath.c_str());
img->setPosition(ccp(,));
img->setAnchorPoint(ccp(,));
CCSize sz = img->getContentSize(); CCRenderTexture* pRT = CCRenderTexture::create(sz.width, sz.height, kCCTexture2DPixelFormat_RGBA8888);
pRT->clear(,,,);
pRT->begin();
img->visit();
pRT->end(); std::string strSaveFile = strFileName.substr(,strFileName.rfind(pszSuffix));
strSaveFile+=".png";
std::string strSaveFullPath = strSaveFolderPath+strSaveFile; CCImage *pImage = pRT->newCCImage(true);
pImage->saveToFile(strSaveFullPath.c_str(), false);
CC_SAFE_DELETE(pImage); CCLOG("%s",fileDir.name); nFileNum++; }while( _findnext( lfDir, &fileDir ) == ); char szMsg[] = {};
sprintf(szMsg,"%d files have been converted",nFileNum);
pLabel->setString(szMsg);
}
} return true;
}

把.pvr.ccz文件转换成png的更多相关文章

  1. *.pvr.ccz文件还原成png格式

    处于学习的目的,解包学习某个游戏的资源.大部分的素材都是png文件.但是一部分关键的是用的pvr.ccz文件. 百度一下知道这个文件是TexturePacker打包出来的文件,于是就又百度到了解决办法 ...

  2. mpp文件转换成jpg图片,可以用pdf文件做中转站

    用project软件做了一个表,发现不能转换成图片,先把mpp文件转换成pdf文件,然后用PS打开pdf文件,存储为jpg格式就行了

  3. php将文件转换成二进制输出[转]

    header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fope ...

  4. ocx文件转换成C#程序引用的DLL

    将ocx文件转换成C#程序引用的DLL文件的办法  将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下  1.打开VS2008或VS2010命令提示符(此例用VS2008) 将o ...

  5. Python:将utf-8格式的文件转换成gbk格式的文件

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.ope ...

  6. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件

    PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几 ...

  7. Marvel – 将图像和源文件转换成互动,共享的原型

    Marvel 是一款非常简单的工具,将图像和设计源文件转换成互动,共享的原型,无需任何编码.原型可以通过点击几下鼠标就创建出来,能工作在任何设备上的浏览器,包括移动设备,台式机.Marvel 的一个特 ...

  8. ABBYY将JPEG文件转换成Word文档的方法

    日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...

  9. 使用bootstrap的html文件转换成jsp…

    问题:使用bootstrap的html文件转换成jsp时表单高度变窄 解决方法: 将jsp中html文档类型修改为<!DOCTYPE html> 问题即可解决. 也就是bootstrap只 ...

随机推荐

  1. hdu3613 扩展KMP

    #include<stdio.h> #include<string.h> #define maxn 501000 char s[maxn],t[maxn]; int next[ ...

  2. Cocos2d-X3.0 刨根问底(二)----- 从HelloWorld开始

    小鱼习惯直接从代码实例来学习一套成型的引擎库. 运行cpp-empty-test 一个典型的HelloWorld程序翻看代码结构 看到了 main.h与main.cpp文件就从这里开始 #ifndef ...

  3. mint锁屏设置

    心血来潮,给笔记本装了linux,版本是当下最火的mint.唔,使用体验不错-下面记录的是修改mint锁屏相关设置的修改方式. In Linux Mint 13, the screen lock fe ...

  4. Eclipse在线安装ADT插件

    要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件,我使用的Eclipse版本是:eclipse-jee-luna-SR ...

  5. 位图索引:原理(BitMap index)

    http://www.cnblogs.com/LBSer/p/3322630.html 位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这 ...

  6. map vs hash_map

    1. map, multimap, set, multiset g++ 中 map, multimap, set, multiset 由红黑树实现 map: bits/stl_map.h multim ...

  7. php-5.3 zend opcache 的设置

    故障现象,修改了代码上传到生产服务器之后,需要等待60秒才生效. 细查了一下,是opcache引起的,默认是60秒.于是我给关了,之前是ea加速,现在新版本的php好像用这个opcache了:; 2s ...

  8. HttpApplication的处理管道处理过程简单描述

    在asp.net中,asp.net服务器对每次请求的处理过程都是相同的,都要经过HttpApplication的处理管道.管道内的处理过程是固定的,在服务器处理请求的各个阶段,伴随着处理的进行,依次触 ...

  9. win7电脑安装wamp出现httpd.exe无法找到组件MSVCR100.dll的解决办法

    昨天重新安装了系统,今天想装一个wamp,在安装过程中报httpd.exe无法找到组件 如图u 运行wamp,发现图标是黄色的,apache没有选中,测试80端口也未被占用. 重新卸载了,又安装了一遍 ...

  10. mysql更新一个表里的字段等于另一个表某字段的值

    update a left join c on a.id = c.id set a.body = c.c1 where a.id=c.id; update zcat as z left join zc ...