2024年5月11日发(作者:)
241 public void Bit32To24()
242 {
243 Bitmap bmp32 = new Bitmap(filepath);
244 BitmapData data32 = ts(new Rectangle(0, 0, , ), ly, 32bppArgb);
245 Bitmap bmp24 = new Bitmap(, , 24bppRgb);
246 BitmapData data24 = ts(new Rectangle(0, 0, , ), nly, 24bppRgb);
247 unsafe
248 {
249 byte* ptr32 = (byte*)ter();
250 byte* ptr24 = (byte*)ter();
251 for (int i = 0; i < ; i++)
252 {
253 for (int j = 0; j < ; j++)
254 {
255 //将32位位图的RGB值赋值给24位位图的RGB值
256 *ptr24++ = *ptr32++;
257 *ptr24++ = *ptr32++;
258 *ptr24++ = *ptr32++;
259 ptr32++;//跳过透明度字节
260 }
261 ptr24 += - * 3;
262 ptr32 += - * 4;
263 }
264 }
265 Bits(data32);
266 Bits(data24);
267 (savepath);
268 }
269
270 public void Bit24To32()
271 {
272 Bitmap bmp24 = new Bitmap(filepath);
273 BitmapData data24 = ts(new Rectangle(0, 0, , ), ly, 24bppRgb);
274 Bitmap bmp32 = new Bitmap(, , 32bppArgb);
275 BitmapData data32 = ts(new Rectangle(0, 0, , ), nly, 32bppArgb);
276 unsafe
277 {
278 byte* ptr24 = (byte*)ter();
279 byte* ptr32 = (byte*)ter();
280 for (int i = 0; i < ; i++)
281 {
282 for (int j = 0; j < ; j++)
283 {
284 //将24位位图的RGB值赋值给32位位图的RGB分量
285 *ptr32++ = *ptr24++;
286 *ptr32++ = *ptr24++;
287 *ptr32++ = *ptr24++;
288 *ptr32++ = 255;//设透明度为100%
289 }
290 ptr24 += - * 3;
291 ptr32 += - * 4;
292 }
293 }
294 Bits(data32);
295 Bits(data24);
296 (savepath);
297 }
298 }
发布评论