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 }