C++读写Tga文件
来源:互联网 发布:交换机网管软件 编辑:程序博客网 时间:2024/05/01 09:49
// tga.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <math.h>#include <iostream>using namespace std;#define RGB2INT(r,g,b) (r*256*256 + g*256 + b)void SaveTGA( const char *filename, DWORD width, DWORD height, const byte *data ){FILE *savefile = fopen(filename, "wb");byte type_header[12] = {0,0,2,0,0,0,0,0,0,0,0,0};fwrite( type_header,12*sizeof( byte ),1,savefile );byte header[6];header[0] = width % 256;header[1] = width / 256;header[2] = height % 256;header[3] = height / 256;header[4] = 32;header[5] = 8;fwrite( header, 6*sizeof( byte ),1,savefile );unsigned int image_size= 4*width*height;byte * invert_data = new byte [image_size];memset( invert_data,0,image_size*sizeof( byte ) );for( unsigned int i=0; i<image_size; i++ ){invert_data[ i ] = data[ i ];}// Swap red and blue,RGB转为BGRfor ( unsigned int cswap = 0; cswap < image_size; cswap += 4 ){byte r = invert_data[cswap];invert_data[cswap] = invert_data[cswap + 2];invert_data[cswap + 2] = r;}fwrite( invert_data,image_size*sizeof( byte ),1,savefile );fclose( savefile );delete [] invert_data;}void GetTGASize(const char *filename, DWORD& width, DWORD& height){FILE *of = fopen(filename, "rb");byte type_header[12];fread( type_header, sizeof(byte), 12, of);byte header[6];fread( header, sizeof(byte), 6, of);width = header[1] * 256 + header[0];height = header[3] * 256 + header[2];fclose( of );}bool ReadTGA(const char *filename, byte* data, int dataSize){FILE *of = fopen(filename, "rb");byte type_header[12];fread( type_header, sizeof(byte), 12, of);byte header[6];fread( header, sizeof(byte), 6, of);if (header[4] != 32){return false;}fread(data, sizeof(byte), dataSize, of);// Swap red and blue,RGB转为BGRfor ( unsigned int i = 0; i < dataSize; i += 4 ){byte r = data[i];data[i] = data[i + 2];data[i + 2] = r;}fclose( of );}int _tmain(int argc, _TCHAR* argv[]){#define PIXELS 24*24byte data[PIXELS * 4];ReadTGA("Tili.tga", data, PIXELS * 4);SaveTGA("Tili2.tga", 24, 24, data);return 0;}
适用于32位色的无压缩tga文件。
- C++读写Tga文件
- 读写TGA文件
- TGA文件类
- tga文件解析
- TGA 文件解析
- 【C/C++】文件读写
- c语言读写文件
- 文件读写(c)
- C#-读写INI文件
- [C++]文件读写操作
- C#读写INI文件
- C 读写文件
- C读写ini文件
- c#FileStream文件读写
- 读写文件 c
- WinAPI C读写文件?
- C语言读写文件
- 文件读写(C++)
- NSKeyedArchiver的基础用法
- 初见Android
- Linux下设置双网卡
- 在Django框架下使用静态文件(css/js/img等)
- 搭建android开发环境
- C++读写Tga文件
- ORACLE学习笔记1
- 右键菜单事件contextMenuEvent(QContextMenuEvent *event)
- 关于如何提高邮件营销的成功率心得分享?
- 技术人员为什么当不好老板
- Android屏幕切换
- 找创业伙伴,比找老婆还难
- Application.DoEvents
- html中动态分级表头的实现