Chủ đề: chuyển file .pcx thành file .pmb
-
01-10-2008, 08:02 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
chuyển file .pcx thành file .pmb
mình vừa nhận được cái đề có tính ứng dụng rất căn bản và cũng khá lý thú nhưng loay hoay giải quyết 1 mình thì không vui tí nào pót lên đây anh em cùng xắn tay áo (hay xắn quần cũng được [IMG]images/smilies/smile.png[/IMG] ) cùng làm với mình nha! rất mong sự cộng tác của anh em!
đề :
_đọc 1 file .pcx
_đọc 1 file .bmp
_chuyen file pcx -> .bmp
_chuyen file bmp -> .pcx
.....................strat.................[IMG]images/smilies/applause.gif[/IMG]View more random threads:
- chuyển file .pcx thành file .pmb
- Code C khóa chuột máy tính. Buồn buồn nghịch chơi tí :)
- Demo COM VS2008.
- Học hỏi và trao đổi: viết trò chơi Tetris bằng visual c++.
- luận văn chương trình quản lí phòng net
- Source code hack Chicken Invaders 4 - Ultimate Omelette
- Trò chơi caro viết bằng VC++ (Đầy đủ mã nguồn)
- Code chuẩn game Mario
- Mã nguồn chương trình nghe file midi!
- Source Game Xếp hình C++
-
01-10-2008, 08:10 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- Số 60 Thái Hà, Đống Đa, Hà Nội
- Bài viết
- 0
mình viết trên viúal studio 2005 mình khai báo và đọc cái header .pcx như vầy:
[CODE = CPP]
// PCX_Ver1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "stdio.h"
using namespace std;
//cau truc mo ta cua 1 thanh phan mau (RGB)
typedef struct RGB_ENTRY
{
unsigned char R;
unsigned char G;
unsigned char B;
}RGB_ENTRY;
//dinh nghia cau truc cua 1 Header!
typedef struct PCX_HEADER
{
unsigned char manufacturer;
unsigned char version;
unsigned char encoding;
unsigned char bitsPerPixel;
short xMin;
short yMin;
short xMax;
short yMax;
short hDPI;
short vDPI;
RGB_ENTRY colorPalette[16];
unsigned char reserved;
unsigned char colorPlane;
unsigned int bytesPerLine;
unsigned int paletteInfo;
char filter[58];
}PCX_HEADER;
typedef struct pcx_picture
{
PCX_HEADER header;
RGB_ENTRY _256ExtendColorPalette[256];
char * buffer;
}pcx_picture;
void PCX_Load(char *filename, pcx_picture &pic)
{
FILE *fp;
int num_bytes,
index;
long count;
unsigned char data;
char *temp_buffer;
//mo file
fp = fopen(filename, "rb");
//doc header
fread(&pic.header, sizeof(PCX_HEADER), 1, fp);
//kiem tra co phan mo rong ko?
if(pic.header.bitsPerPixel == 8 && pic.header.colorPlane ==1)
{
int n = 256 * sizeof(RGB_ENTRY);
fseek(fp, -n, SEEK_END);
fread(pic._256ExtendColorPalette, sizeof(RGB_ENTRY),256, fp);
}
cout << ftell(fp); //--> 136??
}
void main()
{
pcx_picture pic;
PCX_Load("BEAR.PCX", pic);
}
[/CODE]
nhưng theo mình tìm hiểu thì cái header này chỉ có 128 bytes thui ko hieu sao khi dung ftell(fp) (sau khi đọc xong cái header ) thì nó lại xuất ra là 136 [IMG]images/smilies/Surprised.gif[/IMG]
các cao thu xem thử dùm mình nha!
a` còn cái vụ giải nén cái file .pcx (theo RLE) nữa mới mệt đây...[IMG]images/smilies/waiting.gif[/IMG]
-
01-10-2008, 08:12 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình viết trên viúal studio 2005 mình khai báo và đọc cái header .pcx như vầy:
Mã:// PCX_Ver1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "iostream" #include "fstream" #include "stdio.h" using namespace std; //cau truc mo ta cua 1 thanh phan mau (RGB) typedef struct RGB_ENTRY { unsigned char R; unsigned char G; unsigned char B; }RGB_ENTRY; //dinh nghia cau truc cua 1 Header! typedef struct PCX_HEADER { unsigned char manufacturer; unsigned char version; unsigned char encoding; unsigned char bitsPerPixel; short xMin; short yMin; short xMax; short yMax; short hDPI; short vDPI; RGB_ENTRY colorPalette[16]; unsigned char reserved; unsigned char colorPlane; unsigned int bytesPerLine; unsigned int paletteInfo; char filter[58]; }PCX_HEADER; typedef struct pcx_picture { PCX_HEADER header; RGB_ENTRY _256ExtendColorPalette[256]; char * buffer; }pcx_picture; void PCX_Load(char *filename, pcx_picture &pic) { FILE *fp; int num_bytes, index; long count; unsigned char data; char *temp_buffer; //mo file fp = fopen(filename, "rb"); //doc header fread(&pic.header, sizeof(PCX_HEADER), 1, fp); //kiem tra co phan mo rong ko? if(pic.header.bitsPerPixel == 8 && pic.header.colorPlane ==1) { int n = 256 * sizeof(RGB_ENTRY); fseek(fp, -n, SEEK_END); fread(pic._256ExtendColorPalette, sizeof(RGB_ENTRY),256, fp); } cout << ftell(fp); //--> 136?? } void main() { pcx_picture pic; PCX_Load("BEAR.PCX", pic); }
các cao thu xem thử dùm mình nha!
a` còn cái vụ giải nén cái file .pcx (theo RLE) nữa mới mệt đây...[IMG]images/smilies/waiting.gif[/IMG]
-
01-10-2008, 08:16 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình viết trên viúal studio 2005 mình khai báo và đọc cái header .pcx như vầy:
Mã:// PCX_Ver1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "iostream"#include "fstream"#include "stdio.h"using namespace std; //cau truc mo ta cua 1 thanh phan mau (RGB)typedef struct RGB_ENTRY { unsigned char R; unsigned char G; unsigned char B;}RGB_ENTRY; //dinh nghia cau truc cua 1 Header!typedef struct PCX_HEADER { unsigned char manufacturer; unsigned char version; unsigned char encoding; unsigned char bitsPerPixel; short xMin; short yMin; short xMax; short yMax; short hDPI; short vDPI; RGB_ENTRY colorPalette[16]; unsigned char reserved; unsigned char colorPlane; unsigned int bytesPerLine; unsigned int paletteInfo; char filter[58];}PCX_HEADER; typedef struct pcx_picture{ PCX_HEADER header; RGB_ENTRY _256ExtendColorPalette[256]; char * buffer;}pcx_picture; void PCX_Load(char *filename, pcx_picture &pic){ FILE *fp; int num_bytes, index; long count; unsigned char data; char *temp_buffer; //mo file fp = fopen(filename, "rb"); //doc header fread(&pic.header, sizeof(PCX_HEADER), 1, fp); //kiem tra co phan mo rong ko? if(pic.header.bitsPerPixel == 8 && pic.header.colorPlane ==1) { int n = 256 * sizeof(RGB_ENTRY); fseek(fp, -n, SEEK_END); fread(pic._256ExtendColorPalette, sizeof(RGB_ENTRY),256, fp); } cout << ftell(fp); //--> 136?? }void main(){ pcx_picture pic; PCX_Load("BEAR.PCX", pic);}
các cao thu xem thử dùm mình nha!
a` còn cái vụ giải nén cái file .pcx (theo RLE) nữa mới mệt đây...[IMG]images/smilies/waiting.gif[/IMG]
-
01-10-2008, 08:19 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cả 2 thằng này đều áp dụng thuật toán nén dữ liệu RLE(Run Length Encoding-mã hóa theo độ dài lặp lại của dữ liệu) để chạy chỉ khác nhau về việc xử lý các trường hợp đặc biệt(truơng hợp phản tác dụng) thôi nên việc convert giữa 2 thằng này chỉ có 3 việc là: đọc lên -> giải nén -> nén lại với thuật toán tương ứng là được.
ps: post quá nhiều bài giống nhau. Mod sẽ del bài viết của bạn đó.
-
01-10-2008, 08:22 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình biết tư tưởng nó là vậy nhưng mà khi mình bắt tay vào làm thi no sinh ra nhiều problem khó hiểu lắn bạn ơi, vd như việc mình giải nén cái thèng pcx theo RLE thôi mình cũng có thử nhưng mà bạn có biết cách nào để biết mình giải nén đúng ko vậy bạn!
thanks attend!
-
01-10-2008, 08:33 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
đây là hàm giải mã file PCX của mình bạn tham khảo thêm nhé.
Mã:int PCXDecode_a_File(FILE *fEncode, FILE *fDecode){ unsigned char c, n; while (!feof(fEncode)) { c = (unsigned char) getc(fEncode); if (c == EOF) break; if ((c & 0xC0) == 0xC0) { n = c & 0x3f; c = (unsigned char) getc(fEncode); } else n = 1; for (int i=0; i<n; i++) putc(c, fDecode); } fclose(fDecode); return 1;}
-
01-10-2008, 08:50 AM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình cũng hiểu hiểu đoạn code này rùi nhưng bạn ơi, cái này là mình cần giải nén ra rồi ghi lên 1 buffer nào đó để tiện cho việc sau này mình còn phải chuyển nó qua file .bmp nửa mà, như vầy là bạn đả ghi nó ngược lại lên 1 file khác mất rùi!
-
13-10-2008, 12:12 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[IMG]images/smilies/applause.gif[/IMG]
Thiệt tình là bó tay luôn.
1 ông thì đang học CTDL 2. Đăng bài lên hỏi
1 ông thì copy i chang tài liệu của thầy đem trả lời
2 ông cùng học 1 trường + 1 thầy
thêm 1 ông post bài trả lời này nữa là 3
KHTN TP.HCM muôn năm [IMG]images/smilies/smile.png[/IMG] [IMG]images/smilies/smile.png[/IMG] [IMG]images/smilies/smile.png[/IMG] [IMG]images/smilies/smile.png[/IMG] [IMG]images/smilies/smile.png[/IMG]
-
13-10-2008, 04:10 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Dĩ nhiên là UNS = numberone ròy
\(^_^)/
hehe
Dưới ánh nắng mặt trời đang lên, những đống pallet nhựa An Giang trải dài mênh mông như những bức tranh tự nhiên đầy sắc màu. Mỗi chiếc pallet nhựa không chỉ là một vật dụng thông thường mà còn là...
Pallet nhựa An Giang giao hàng...