/** 将 png
图片的数据以字节数组的方式存入头文件,将头文件持久化到磁盘系统中~ */
-(void) savePngBytesAsHeaderFile:(NSString*)pngName columns:(int)columns {
//
唯有这种方式取得的 NSData
对象的 length 属性不再为0,有效!!
NSString *filePath = [[NSBundle
mainBundle] pathForResource:pngName
ofType:@"png"];
NSData *imageData = [[NSData
alloc] initWithContentsOfFile:filePath];
Byte *bytes = (Byte*)[imageData
bytes];
NSUInteger length = [imageData length];
NSMutableString *hexStr = [NSMutableStringstring];
NSString *nameModified = [NSString
stringWithString:pngName];
//
将图片名称中的 '-'
替换成 '_' ~
nameModified = [nameModifiedstringByReplacingOccurrencesOfString:@"-"withString:@"_"];
[hexStrappendFormat:@"#ifndef MacEncryptTool_%@_PNG_H\n",
[nameModifieduppercaseString]];
[hexStrappendFormat:@"#define MacEncryptTool_%@_PNG_H\n\n",
[nameModifieduppercaseString]];
[hexStrappendFormat:@"unsigned char %@_png[] = {\n\t",
nameModified];
NSString *splitStr = [NSString
stringWithString:@", "];
for(int i =
0; i < length; ++ i) {
NSString *itemStr = [NSString
stringWithFormat:@"%x", bytes[i]&0xff];// 16进制数
if([itemStr length] ==
1) { // 补一位 0 ~
itemStr = [NSStringstringWithFormat:@"0x0%@", itemStr];
}
else {
itemStr = [NSStringstringWithFormat:@"0x%@", itemStr];
}
if(i != length-1) {
[hexStr
appendFormat:@"%@%@", itemStr, splitStr];
if((i+1)%columns ==
0) {
[hexStrappendString:@"\n\t"]; //
换行~
}
}
else {
[hexStr
appendFormat:@"%@\n", itemStr];
}
}
[hexStrappendFormat:@"};\nunsigned int %@_png_len = %u;\n",
nameModified, length];
[hexStr
appendString:@"\n#endif"];
NSString *fileName = [NSString
stringWithFormat:@"%@.png.h", nameModified];
[hexStrwriteToFile:fileName
atomically:NOencoding:NSUTF8StringEncodingerror:nil];
// NSData *fileData = [hexStr dataUsingEncoding:NSUTF8StringEncoding];
// [fileData writeToFile:fileName atomically:NO];
}
分享到:
相关推荐
"bin文件转换为C文件转换工具"是针对这两种类型文件进行转换的工具,它允许开发者将二进制数据嵌入到C程序中,以便于存储、传输或执行特定操作。 在开发过程中,有时我们需要将二进制文件(如固件更新、配置数据或...
在IT领域,将文件转换为十六进制是一种常见的操作,特别是在软件开发、数据处理和逆向工程中。这个“将文件转换为十六进制.zip”压缩包包含了一个名为"ToHex"的程序,它能实现这一功能。这个程序的目的是将任意文件...
在上一篇文章中,我们可能已经深入研究了Qt的Rcc工具的工作原理,了解了它是如何将资源文件转换为C++源代码,然后这些源代码在编译时被整合到应用程序中。现在,我们将利用这些知识来创建一个名为"SimpleRcc"的简化...
要将ICO文件转换为DLL,我们需要进行以下步骤: 1. **创建资源脚本**:DLL文件中的资源,如图标,需要通过资源脚本来定义。你可以使用Visual Studio这样的IDE,或者独立的工具如Resource Hacker或RCEdit来创建或...
在编译时,这个脚本会被转换为二进制资源文件,然后嵌入到最终的EXE或DLL中。在我们的例子中,"提取EXE或DLL中的图标.rc"就是这样一个资源脚本,它可能包含了提取图标的定义。 要从EXE或DLL中提取图标,我们主要...
在编程领域,有时我们需要直接从`.dll`或`.exe`文件中提取资源,例如图片、图标等。...通过理解Windows API以及提供的源代码,开发者可以学习如何与二进制资源交互,这对于开发需要处理资源文件的应用程序非常有帮助。
在MFC中,我们通常会创建一个基于对话框的应用程序,然后将其转换为单文档界面(SDI)。SDI允许用户查看和编辑单个文档,这通常是通过CView类的子类实现的。在我们的案例中,我们将创建一个新的CView派生类,该类将...
例如,可以将字符串资源内联到代码中,减少资源文件的使用。 6. **自我修改**:虽然不常见,但有些程序可能会有自我修改的能力,即在运行时改变自己的内容。这通常涉及到复杂的操作,如重新定位代码、更新PE头信息...
在这个项目中,`png.cpp`可能包含了调用libpng API来读取PNG数据流,并将图像数据转换为可以在Windows GDI(Graphics Device Interface)中显示的位图。 5. **Windows GDI**:GDI是Windows操作系统的一部分,提供了...
在Visual C++(以下简称VC)开发环境中,当资源文件转换为二进制格式后,会被保存在APS文件中。这种格式的主要目的是为了加速资源加载速度。 - **特点**: - 作为中间文件存在,主要用于提高效率。 - 不直接参与...
4. DCTSZSY.uir:用户界面资源文件,定义了程序的图形用户界面,可能包括输入图像、显示结果等控件。 在嵌入水印的过程中,一般会先对图像进行DCT变换,然后在变换系数中选择合适的部分(通常是高频区域)插入水印...
- **资源文件**:VB项目中的资源(如位图、图标等)通常是嵌入到可执行文件中的。在VC中,这些资源可以放在单独的.res文件中,方便管理和更新。 - **动态链接库(DLL)**:为了扩展功能,可以将部分代码封装到DLL...
构建APP时,需要将entitlements.plist与Xcode项目或Makefile正确关联,确保在打包过程中被正确地嵌入到最终的IPA文件中。使用`codesign`命令进行代码签名时,需指定entitlements文件: ```bash codesign -s "Your ...
MATLAB Compiler可以将MATLAB代码转换为可独立运行的组件,例如DLL或独立的可执行文件,这样就可以在非MATLAB环境中调用。在VS2008中,我们将创建一个项目,并链接到由MATLAB Compiler生成的组件。 1. **配置VS2008...
工具可以帮助开发者从LIB文件中提取出源代码、头文件或其他资源,这对于逆向工程、学习库的内部实现或在没有源代码的情况下修复问题很有帮助。 4. **依赖分析** 它可能能识别库文件依赖的其他库或模块,这对于...
【标题】:“vtk Qt结合的文件”涉及到的技术领域是计算机图形学和软件开发,特别是将Visualization Toolkit (vtk)与Qt框架进行集成的应用。在这一领域,开发者常常需要处理图形用户界面(GUI)与3D可视化之间的交互...
1. 工程配置:VC++工程可以包含多个源文件和资源文件,每个工程可以有多种配置(如Debug、Release),每种配置可以独立设置编译选项。 2. 依赖关系:理解项目的依赖关系对于构建和调试至关重要,包括头文件、库文件...
我们先要将qrcodegen的头文件和源文件添加到QT工程,然后调用`qrcodegen::QrCode::encodeText()`生成二维码数据,再将其转换为像素矩阵,最后利用QImage和QPainter进行绘制。 在"QRCode.rar"这个压缩包中,可能包含...
通过这些资源的学习,你不仅可以掌握Simulink的基本建模和仿真技能,还能了解如何在实际工程中将Simulink模型嵌入到VC程序中,提升系统设计的效率和灵活性。对于希望在控制工程、信号处理等领域工作的人来说,这是一...
Lua是一种轻量级的、解释型的、面向过程的脚本语言,设计目标是易于嵌入到其他应用中。LuaPlus是Lua的一个扩展,它提供了更高级别的API,使得与C++的交互更为简单和高效。例如,LuaPlus提供了自动垃圾回收机制,使得...