⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image.c

📁 brew平台图像处理源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

		   switch(sampleX) {
				case 10://采样率为1/10,每10个点采样一个点
				case 20://采样率为20/100,每5个点采样一个点
				case 30://采样率为30/100,每3个点采样一个点
				case 40://采样率为40/100,每2个点采样一个点
				case 50://采样率为50/100,每2个点采样一个点	
					

					for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i=pMe->i+100/sampleX){//100/sampleX
										//得到象素点
					   {	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
										//写到新的位图中
							IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x++,new_y,pMe->pColor,AEE_RO_COPY);
					   } 
					}
					new_y++;
					new_x=0;
   				 break;

				case 60://固定取点;10个点,取6个,分别是0,2,3,5,6,8,
							for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i++){
									switch(pMe->i%10) {
									case 0:
									case 2:
									case 3:
									case 5:
									case 6:
									case 8:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x++,new_y,pMe->pColor,AEE_RO_COPY);
									   } 
									  break;
									
									default:
										break;
									};//end of switch
							}// end of for loop
							 
							 new_y++;
							 new_x=0;

   						break;
						
						case 70://固定取点;10个点,取7个,分别是0,1,3,4,6,7,9
							for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i++){
									switch(pMe->i%10) {
									case 0:
									case 1:
									case 3:
									case 4:
									case 6:
									case 7:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x++,new_y,pMe->pColor,AEE_RO_COPY);
									   } 
									 break;
									
									default:
										break;
									};//end of switch
							}// end of loop

							     new_y++;
							     new_x=0;
								 
                        	break;
								

						case 80://固定取点;10个点,取8个,分别是0,1,3,4,5, 6,8,9
							for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i++){
									switch(pMe->i%10) {
									case 0:
									case 1:
									case 3:
									case 4:
									case 5:
									case 6:
									case 8:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x++,new_y,pMe->pColor,AEE_RO_COPY);
									   } 

										break;
									
									default:
										break;
									};//end of switch
							}// end of loop

							     new_y++;
							     new_x=0;
								 
                        	break;

							
						case 90://固定取点;10个点,取9个,分别是0,1,2, 3,5, 6,7, 8,9
 							for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i++){
									switch(pMe->i%10) {
									case 0:
									case 1:
									case 2:
									case 3:
									case 5:
									case 6:
									case 7:
									case 8:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x++,new_y,pMe->pColor,AEE_RO_COPY);
									   } 

										break;
									
									default:
										break;
									};//end of switch
							}// end of loop

							     new_y++;
							     new_x=0;
								 
                        	break;

							
 
   					
					   default:
						   if (sampleX>=100) {//放大,包含所有的倍数放大
						    	for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx;pMe->i++){
												//得到象素点
									   	IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中,注意考虑放大倍数
									    for(new_x=pMe->i*sampleX/100;new_x<=(pMe->i+1)*sampleX/100-1;new_x++)
												IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ,new_x,new_y,pMe->pColor,AEE_RO_COPY);
								}//end of for loop
								
								new_y++;
						   }
						   break;
					   }// end of the big switch
 // CHECK_ERROR(IBITMAP_BltIn(pbmScreen, 300, 65, ((uint16)bi.cx*sampleX/100), ((uint16)pMe->bi.cy), pMe->m_pBitmap_OBJ, 0, 0, AEE_RO_COPY));

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//对Y轴按照要求变换
   	new_x=0;
	new_y=0;

   //创建新的兼容位图
   CHECK_ERROR(IBITMAP_CreateCompatibleBitmap(pMe->pbmScreen, &pMe->m_pBitmap_OBJ_OBJ, (uint16)((uint16)pMe->bi.cx*sampleX/100), (uint16)((uint16)pMe->bi.cy*sampleY/100)));
   		for(pMe->i=0;pMe->i<=(uint16)pMe->bi.cx*sampleX/100;pMe->i++)//X轴不变

		   switch(sampleY) {
				case 10://采样率为1/10,每10个点采样一个点
				case 20://采样率为20/100,每5个点采样一个点
				case 30://采样率为30/100,每3个点采样一个点
				case 40://采样率为40/100,每2个点采样一个点
				case 50://采样率为50/100,每2个点采样一个点	
					

					for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j=pMe->j+100/sampleY){//100/sampleX
										//得到象素点
					   {	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
										//写到新的位图中
							IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y++,pMe->pColor,AEE_RO_COPY);
					   } 
					   
					}
     				new_x++;
				    new_y=0;
   				 break;

				case 60://固定取点;10个点,取6个,分别是0,2,3,5,6,8,
							for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j++){
									switch(pMe->j%10) {
									case 0:
									case 2:
									case 3:
									case 5:
									case 6:
									case 8:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y++,pMe->pColor,AEE_RO_COPY);
									   } 
									  break;
									
									default:
										break;
									};//end of switch
							}// end of for loop
							 
							 new_x++;
							 new_y=0;

   						break;
						
						case 70://固定取点;10个点,取7个,分别是0,1,3,4,6,7,9
							for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j++){
									switch(pMe->j%10) {
									case 0:
									case 1:
									case 3:
									case 4:
									case 6:
									case 7:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y++,pMe->pColor,AEE_RO_COPY);
									   } 
									 break;
									
									default:
										break;
									};//end of switch
							}// end of loop

							     new_x++;
							     new_y=0;
								 
                        	break;
								

						case 80://固定取点;10个点,取8个,分别是0,1,3,4,5, 6,8,9
							for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j++){
									switch(pMe->j%10) {
									case 0:
									case 1:
									case 3:
									case 4:
									case 5:
									case 6:
									case 8:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y++,pMe->pColor,AEE_RO_COPY);
									   } 

										break;
									
									default:
										break;
									};//end of switch
							}// end of for loop

							     new_x++;
							     new_y=0;
								 
                        	break;

							
						case 90://固定取点;10个点,取9个,分别是0,1,2, 3,5, 6,7, 8,9
 							for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j++){
									switch(pMe->j%10) {
									case 0:
									case 1:
									case 2:
									case 3:
									case 5:
									case 6:
									case 7:
									case 8:
									case 9:
												//得到象素点
									   {	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中
											IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y++,pMe->pColor,AEE_RO_COPY);
									   } 

										break;
									
									default:
										break;
									};//end of switch
							}// end of for loop

							     new_x++;
							     new_y=0;
								 
                        	break;

							
 
   					
					   default:
						   if (sampleY>=100) {//放大,包含所有的倍数放大
						    	for(pMe->j=0;pMe->j<=(uint16)pMe->bi.cy;pMe->j++){
												//得到象素点
									   	IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i,pMe->j, &pMe->pColor ); 
												//写到新的位图中,注意考虑放大倍数
									    for(new_y=pMe->j*sampleY/100;new_y<=(pMe->j+1)*sampleY/100-1;new_y++)
												IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ,new_x,new_y,pMe->pColor,AEE_RO_COPY);
								}//end of for loop
								
								new_x++;
						   }
						   break;
					   }// end of the big switch


   //CHECK_ERROR(IBITMAP_BltIn(pbmScreen, 0, 65, ((uint16)pMe->bi.cx*sampleX/100), ((uint16)pMe->bi.cy*sampleY/100), pMe->m_pBitmap_OBJ_OBJ, 0, 0, AEE_RO_COPY));
   //用	pMe->m_pBitmap 来显示目标位图				
   IDISPLAY_BitBlt(pMe->a.m_pIDisplay,0,0,((uint16)pMe->bi.cx*sampleX/100), ((uint16)pMe->bi.cy*sampleY/100),pMe->m_pBitmap_OBJ_OBJ,0,0,AEE_RO_COPY);

  //////////////////////////////////////////////////////////////////////////
   //显示时间
   time2 = ISHELL_GetTimeMS(pMe->a.m_pIShell);
   pMe->timer2 = time2 - time1;
   WSPRINTF(pMe->timer_char2,32,fmt,pMe->timer2);//pMe->timer2);

      
   return SUCCESS;

Error:

   return nErr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -