在写dnf资源提取的时候,在网上找到的很好图像处理的代码。。。。。
代码
1
private
unsafe
Bitmap FmtArgb1555(
string
DatName, Bitmap DatBitmap)
2 {
3 Bitmap bitmap;
4 using (FileStream stream = new FileStream(DatName, FileMode.Open))
5 {
6 using (BinaryReader reader = new BinaryReader(stream))
7 {
8 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
9 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
10 byte * numPtr = ( byte * ) bitmapdata.Scan0;
11 int num = DatBitmap.Width * 4 ;
12 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
13 {
14 for ( int j = 0 ; j < num; j += 4 )
15 {
16 int num4 = reader.ReadUInt16();
17 numPtr[ 3 ] = ( byte ) ((num4 >> 15 ) * 0xff );
18 numPtr[ 2 ] = ( byte ) ((num4 >> 7 ) & 0xf8 );
19 numPtr[ 1 ] = ( byte ) ((num4 >> 2 ) & 0xf8 );
20 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
21 numPtr += 4 ;
22 }
23 }
24 DatBitmap.UnlockBits(bitmapdata);
25 bitmap = DatBitmap;
26 }
27 }
28 return bitmap;
29 }
30
31 private unsafe Bitmap FmtArgb4444( string DatName, Bitmap DatBitmap)
32 {
33 Bitmap bitmap;
34 using (FileStream stream = new FileStream(DatName, FileMode.Open))
35 {
36 using (BinaryReader reader = new BinaryReader(stream))
37 {
38 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
39 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
40 byte * numPtr = ( byte * ) bitmapdata.Scan0;
41 int num = DatBitmap.Width * 4 ;
42 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
43 {
44 for ( int j = 0 ; j < num; j += 4 )
45 {
46 int num4 = reader.ReadUInt16();
47 numPtr[ 3 ] = ( byte ) ((num4 >> 8 ) & 240 );
48 numPtr[ 2 ] = ( byte ) ((num4 >> 4 ) & 240 );
49 numPtr[ 1 ] = ( byte ) (num4 & 240 );
50 numPtr[ 0 ] = ( byte ) ((num4 << 4 ) & 240 );
51 numPtr += 4 ;
52 }
53 }
54 DatBitmap.UnlockBits(bitmapdata);
55 bitmap = DatBitmap;
56 }
57 }
58 return bitmap;
59 }
60
61 private unsafe Bitmap FmtArgb8888( string DatName, Bitmap DatBitmap)
62 {
63 Bitmap bitmap;
64 using (FileStream stream = new FileStream(DatName, FileMode.Open))
65 {
66 using (BinaryReader reader = new BinaryReader(stream))
67 {
68 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
69 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
70 byte * numPtr = ( byte * ) bitmapdata.Scan0;
71 int num = DatBitmap.Width * 4 ;
72 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
73 {
74 for ( int j = 0 ; j < num; j += 4 )
75 {
76 uint num4 = reader.ReadUInt32();
77 numPtr[ 3 ] = ( byte ) (num4 >> 0x18 );
78 numPtr[ 2 ] = ( byte ) ((num4 >> 0x10 ) & 0xff );
79 numPtr[ 1 ] = ( byte ) ((num4 >> 8 ) & 0xff );
80 numPtr[ 0 ] = ( byte ) (num4 & 0xff );
81 numPtr += 4 ;
82 }
83 }
84 DatBitmap.UnlockBits(bitmapdata);
85 bitmap = DatBitmap;
86 }
87 }
88 return bitmap;
89 }
90
91 private unsafe Bitmap FmtDxt1( string DatName, Bitmap DatBitmap)
92 {
93 byte [] sourceArray = new byte [] {
94 0x44 , 0x44 , 0x53 , 0x20 , 0x7c , 0 , 0 , 0 , 7 , 0x10 , 8 , 0 , 0 , 4 , 0 , 0 ,
95 0 , 4 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
96 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
97 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
98 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x20 , 0 , 0 , 0 ,
99 4 , 0 , 0 , 0 , 0x44 , 0x58 , 0x54 , 0x31 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
100 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 ,
101 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
102 };
103 sourceArray[ 13 ] = ( byte ) (DatBitmap.Height / 0x100 );
104 sourceArray[ 0x11 ] = ( byte ) (DatBitmap.Width / 0x100 );
105 byte [] buffer2 = File.ReadAllBytes(DatName);
106 byte [] destinationArray = new byte [sourceArray.Length + buffer2.Length];
107 Array.Copy(sourceArray, 0 , destinationArray, 0 , sourceArray.Length);
108 Array.Copy(buffer2, 0 , destinationArray, sourceArray.Length, buffer2.Length);
109 using (Stream stream = new MemoryStream(destinationArray))
110 {
111 DdsFile file = new DdsFile();
112 file.Load(stream);
113 byte [] pixelData = file.GetPixelData();
114 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
115 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
116 int num = DatBitmap.Width * 4 ;
117 byte * numPtr = ( byte * ) bitmapdata.Scan0;
118 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
119 {
120 for ( int j = 0 ; j < num; j += 4 )
121 {
122 int index = (i * num) + j;
123 numPtr[ 2 ] = pixelData[index];
124 numPtr[ 1 ] = pixelData[index + 1 ];
125 numPtr[ 0 ] = pixelData[index + 2 ];
126 numPtr[ 3 ] = pixelData[index + 3 ];
127 numPtr += 4 ;
128 }
129 }
130 DatBitmap.UnlockBits(bitmapdata);
131 return DatBitmap;
132 }
133 }
134
135 private unsafe Bitmap FmtDxt5( string DatName, Bitmap DatBitmap)
136 {
137 byte [] sourceArray = new byte [] {
138 0x44 , 0x44 , 0x53 , 0x20 , 0x7c , 0 , 0 , 0 , 7 , 0x10 , 8 , 0 , 0 , 4 , 0 , 0 ,
139 0 , 4 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
140 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
141 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
142 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x20 , 0 , 0 , 0 ,
143 4 , 0 , 0 , 0 , 0x44 , 0x58 , 0x54 , 0x35 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
144 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 ,
145 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
146 };
147 sourceArray[ 13 ] = ( byte ) (DatBitmap.Height / 0x100 );
148 sourceArray[ 0x11 ] = ( byte ) (DatBitmap.Width / 0x100 );
149 byte [] buffer2 = File.ReadAllBytes(DatName);
150 byte [] destinationArray = new byte [sourceArray.Length + buffer2.Length];
151 Array.Copy(sourceArray, 0 , destinationArray, 0 , sourceArray.Length);
152 Array.Copy(buffer2, 0 , destinationArray, sourceArray.Length, buffer2.Length);
153 using (Stream stream = new MemoryStream(destinationArray))
154 {
155 DdsFile file = new DdsFile();
156 file.Load(stream);
157 byte [] pixelData = file.GetPixelData();
158 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
159 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
160 int num = DatBitmap.Width * 4 ;
161 byte * numPtr = ( byte * ) bitmapdata.Scan0;
162 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
163 {
164 for ( int j = 0 ; j < num; j += 4 )
165 {
166 int index = (i * num) + j;
167 numPtr[ 2 ] = pixelData[index];
168 numPtr[ 1 ] = pixelData[index + 1 ];
169 numPtr[ 0 ] = pixelData[index + 2 ];
170 numPtr[ 3 ] = pixelData[index + 3 ];
171 numPtr += 4 ;
172 }
173 }
174 DatBitmap.UnlockBits(bitmapdata);
175 return DatBitmap;
176 }
177 }
178
179 private unsafe Bitmap FmtRgb555( string DatName, Bitmap DatBitmap)
180 {
181 Bitmap bitmap;
182 using (FileStream stream = new FileStream(DatName, FileMode.Open))
183 {
184 using (BinaryReader reader = new BinaryReader(stream))
185 {
186 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
187 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
188 byte * numPtr = ( byte * ) bitmapdata.Scan0;
189 int num = DatBitmap.Width * 4 ;
190 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
191 {
192 for ( int j = 0 ; j < num; j += 4 )
193 {
194 int num4 = reader.ReadUInt16();
195 numPtr[ 3 ] = 0xff ;
196 numPtr[ 2 ] = ( byte ) ((num4 >> 7 ) & 0xf8 );
197 numPtr[ 1 ] = ( byte ) ((num4 >> 2 ) & 0xf8 );
198 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
199 numPtr += 4 ;
200 }
201 }
202 DatBitmap.UnlockBits(bitmapdata);
203 bitmap = DatBitmap;
204 }
205 }
206 return bitmap;
207 }
208
209 private unsafe Bitmap FmtRgb565( string DatName, Bitmap DatBitmap)
210 {
211 Bitmap bitmap;
212 using (FileStream stream = new FileStream(DatName, FileMode.Open))
213 {
214 using (BinaryReader reader = new BinaryReader(stream))
215 {
216 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
217 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
218 byte * numPtr = ( byte * ) bitmapdata.Scan0;
219 int num = DatBitmap.Width * 4 ;
220 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
221 {
222 for ( int j = 0 ; j < num; j += 4 )
223 {
224 int num4 = reader.ReadUInt16();
225 numPtr[ 3 ] = 0xff ;
226 numPtr[ 2 ] = ( byte ) ((num4 >> 8 ) & 0xf8 );
227 numPtr[ 1 ] = ( byte ) ((num4 >> 3 ) & 0xfc );
228 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
229 numPtr += 4 ;
230 }
231 }
232 DatBitmap.UnlockBits(bitmapdata);
233 bitmap = DatBitmap;
234 }
235 }
236 return bitmap;
237 }
238
2 {
3 Bitmap bitmap;
4 using (FileStream stream = new FileStream(DatName, FileMode.Open))
5 {
6 using (BinaryReader reader = new BinaryReader(stream))
7 {
8 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
9 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
10 byte * numPtr = ( byte * ) bitmapdata.Scan0;
11 int num = DatBitmap.Width * 4 ;
12 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
13 {
14 for ( int j = 0 ; j < num; j += 4 )
15 {
16 int num4 = reader.ReadUInt16();
17 numPtr[ 3 ] = ( byte ) ((num4 >> 15 ) * 0xff );
18 numPtr[ 2 ] = ( byte ) ((num4 >> 7 ) & 0xf8 );
19 numPtr[ 1 ] = ( byte ) ((num4 >> 2 ) & 0xf8 );
20 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
21 numPtr += 4 ;
22 }
23 }
24 DatBitmap.UnlockBits(bitmapdata);
25 bitmap = DatBitmap;
26 }
27 }
28 return bitmap;
29 }
30
31 private unsafe Bitmap FmtArgb4444( string DatName, Bitmap DatBitmap)
32 {
33 Bitmap bitmap;
34 using (FileStream stream = new FileStream(DatName, FileMode.Open))
35 {
36 using (BinaryReader reader = new BinaryReader(stream))
37 {
38 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
39 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
40 byte * numPtr = ( byte * ) bitmapdata.Scan0;
41 int num = DatBitmap.Width * 4 ;
42 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
43 {
44 for ( int j = 0 ; j < num; j += 4 )
45 {
46 int num4 = reader.ReadUInt16();
47 numPtr[ 3 ] = ( byte ) ((num4 >> 8 ) & 240 );
48 numPtr[ 2 ] = ( byte ) ((num4 >> 4 ) & 240 );
49 numPtr[ 1 ] = ( byte ) (num4 & 240 );
50 numPtr[ 0 ] = ( byte ) ((num4 << 4 ) & 240 );
51 numPtr += 4 ;
52 }
53 }
54 DatBitmap.UnlockBits(bitmapdata);
55 bitmap = DatBitmap;
56 }
57 }
58 return bitmap;
59 }
60
61 private unsafe Bitmap FmtArgb8888( string DatName, Bitmap DatBitmap)
62 {
63 Bitmap bitmap;
64 using (FileStream stream = new FileStream(DatName, FileMode.Open))
65 {
66 using (BinaryReader reader = new BinaryReader(stream))
67 {
68 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
69 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
70 byte * numPtr = ( byte * ) bitmapdata.Scan0;
71 int num = DatBitmap.Width * 4 ;
72 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
73 {
74 for ( int j = 0 ; j < num; j += 4 )
75 {
76 uint num4 = reader.ReadUInt32();
77 numPtr[ 3 ] = ( byte ) (num4 >> 0x18 );
78 numPtr[ 2 ] = ( byte ) ((num4 >> 0x10 ) & 0xff );
79 numPtr[ 1 ] = ( byte ) ((num4 >> 8 ) & 0xff );
80 numPtr[ 0 ] = ( byte ) (num4 & 0xff );
81 numPtr += 4 ;
82 }
83 }
84 DatBitmap.UnlockBits(bitmapdata);
85 bitmap = DatBitmap;
86 }
87 }
88 return bitmap;
89 }
90
91 private unsafe Bitmap FmtDxt1( string DatName, Bitmap DatBitmap)
92 {
93 byte [] sourceArray = new byte [] {
94 0x44 , 0x44 , 0x53 , 0x20 , 0x7c , 0 , 0 , 0 , 7 , 0x10 , 8 , 0 , 0 , 4 , 0 , 0 ,
95 0 , 4 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
96 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
97 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
98 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x20 , 0 , 0 , 0 ,
99 4 , 0 , 0 , 0 , 0x44 , 0x58 , 0x54 , 0x31 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
100 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 ,
101 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
102 };
103 sourceArray[ 13 ] = ( byte ) (DatBitmap.Height / 0x100 );
104 sourceArray[ 0x11 ] = ( byte ) (DatBitmap.Width / 0x100 );
105 byte [] buffer2 = File.ReadAllBytes(DatName);
106 byte [] destinationArray = new byte [sourceArray.Length + buffer2.Length];
107 Array.Copy(sourceArray, 0 , destinationArray, 0 , sourceArray.Length);
108 Array.Copy(buffer2, 0 , destinationArray, sourceArray.Length, buffer2.Length);
109 using (Stream stream = new MemoryStream(destinationArray))
110 {
111 DdsFile file = new DdsFile();
112 file.Load(stream);
113 byte [] pixelData = file.GetPixelData();
114 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
115 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
116 int num = DatBitmap.Width * 4 ;
117 byte * numPtr = ( byte * ) bitmapdata.Scan0;
118 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
119 {
120 for ( int j = 0 ; j < num; j += 4 )
121 {
122 int index = (i * num) + j;
123 numPtr[ 2 ] = pixelData[index];
124 numPtr[ 1 ] = pixelData[index + 1 ];
125 numPtr[ 0 ] = pixelData[index + 2 ];
126 numPtr[ 3 ] = pixelData[index + 3 ];
127 numPtr += 4 ;
128 }
129 }
130 DatBitmap.UnlockBits(bitmapdata);
131 return DatBitmap;
132 }
133 }
134
135 private unsafe Bitmap FmtDxt5( string DatName, Bitmap DatBitmap)
136 {
137 byte [] sourceArray = new byte [] {
138 0x44 , 0x44 , 0x53 , 0x20 , 0x7c , 0 , 0 , 0 , 7 , 0x10 , 8 , 0 , 0 , 4 , 0 , 0 ,
139 0 , 4 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
140 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
141 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
142 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x20 , 0 , 0 , 0 ,
143 4 , 0 , 0 , 0 , 0x44 , 0x58 , 0x54 , 0x35 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
144 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 , 0 , 0 ,
145 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
146 };
147 sourceArray[ 13 ] = ( byte ) (DatBitmap.Height / 0x100 );
148 sourceArray[ 0x11 ] = ( byte ) (DatBitmap.Width / 0x100 );
149 byte [] buffer2 = File.ReadAllBytes(DatName);
150 byte [] destinationArray = new byte [sourceArray.Length + buffer2.Length];
151 Array.Copy(sourceArray, 0 , destinationArray, 0 , sourceArray.Length);
152 Array.Copy(buffer2, 0 , destinationArray, sourceArray.Length, buffer2.Length);
153 using (Stream stream = new MemoryStream(destinationArray))
154 {
155 DdsFile file = new DdsFile();
156 file.Load(stream);
157 byte [] pixelData = file.GetPixelData();
158 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
159 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
160 int num = DatBitmap.Width * 4 ;
161 byte * numPtr = ( byte * ) bitmapdata.Scan0;
162 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
163 {
164 for ( int j = 0 ; j < num; j += 4 )
165 {
166 int index = (i * num) + j;
167 numPtr[ 2 ] = pixelData[index];
168 numPtr[ 1 ] = pixelData[index + 1 ];
169 numPtr[ 0 ] = pixelData[index + 2 ];
170 numPtr[ 3 ] = pixelData[index + 3 ];
171 numPtr += 4 ;
172 }
173 }
174 DatBitmap.UnlockBits(bitmapdata);
175 return DatBitmap;
176 }
177 }
178
179 private unsafe Bitmap FmtRgb555( string DatName, Bitmap DatBitmap)
180 {
181 Bitmap bitmap;
182 using (FileStream stream = new FileStream(DatName, FileMode.Open))
183 {
184 using (BinaryReader reader = new BinaryReader(stream))
185 {
186 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
187 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
188 byte * numPtr = ( byte * ) bitmapdata.Scan0;
189 int num = DatBitmap.Width * 4 ;
190 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
191 {
192 for ( int j = 0 ; j < num; j += 4 )
193 {
194 int num4 = reader.ReadUInt16();
195 numPtr[ 3 ] = 0xff ;
196 numPtr[ 2 ] = ( byte ) ((num4 >> 7 ) & 0xf8 );
197 numPtr[ 1 ] = ( byte ) ((num4 >> 2 ) & 0xf8 );
198 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
199 numPtr += 4 ;
200 }
201 }
202 DatBitmap.UnlockBits(bitmapdata);
203 bitmap = DatBitmap;
204 }
205 }
206 return bitmap;
207 }
208
209 private unsafe Bitmap FmtRgb565( string DatName, Bitmap DatBitmap)
210 {
211 Bitmap bitmap;
212 using (FileStream stream = new FileStream(DatName, FileMode.Open))
213 {
214 using (BinaryReader reader = new BinaryReader(stream))
215 {
216 BitmapData bitmapdata = DatBitmap.LockBits( new Rectangle( 0 , 0 , DatBitmap.Width, DatBitmap.Height),
217 ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
218 byte * numPtr = ( byte * ) bitmapdata.Scan0;
219 int num = DatBitmap.Width * 4 ;
220 for ( int i = 0 ; i < DatBitmap.Height; i ++ )
221 {
222 for ( int j = 0 ; j < num; j += 4 )
223 {
224 int num4 = reader.ReadUInt16();
225 numPtr[ 3 ] = 0xff ;
226 numPtr[ 2 ] = ( byte ) ((num4 >> 8 ) & 0xf8 );
227 numPtr[ 1 ] = ( byte ) ((num4 >> 3 ) & 0xfc );
228 numPtr[ 0 ] = ( byte ) ((num4 << 3 ) & 0xf8 );
229 numPtr += 4 ;
230 }
231 }
232 DatBitmap.UnlockBits(bitmapdata);
233 bitmap = DatBitmap;
234 }
235 }
236 return bitmap;
237 }
238