mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-29 19:53:44 -06:00 
			
		
		
		
	ENH: add anti-Aliasing when generating small thumbnail
JIRA: STUDIO-4374 Change-Id: I9bd9cadd1b3b226d1679a00d5a129c4ed9cb1828 Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
		
							parent
							
								
									f968c152c2
								
							
						
					
					
						commit
						dcf3e736fe
					
				
					 1 changed files with 20 additions and 3 deletions
				
			
		|  | @ -5878,9 +5878,26 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) | |||
|             /* step width and step height */ | ||||
|             int sw = thumbnail_data.width / PLATE_THUMBNAIL_SMALL_WIDTH; | ||||
|             int sh = thumbnail_data.height / PLATE_THUMBNAIL_SMALL_HEIGHT; | ||||
|             for (int i = 0; i < thumbnail_data.width; i += sw) { | ||||
|                 for (int j = 0; j < thumbnail_data.height; j += sh) { | ||||
|                     memcpy((void*)&small_pixels[4*(i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh)], thumbnail_data.pixels.data() + 4*(i * thumbnail_data.width + j), 4); | ||||
|             for (int i = 0; i < thumbnail_data.height; i += sh) { | ||||
|                 for (int j = 0; j < thumbnail_data.width; j += sw) { | ||||
|                     int r = 0, g = 0, b = 0, a = 0; | ||||
|                     for (int m = 0; m < sh; m++) { | ||||
|                         for (int n = 0; n < sw; n++) { | ||||
|                             r += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 0]; | ||||
|                             g += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 1]; | ||||
|                             b += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 2]; | ||||
|                             a += (int)thumbnail_data.pixels[4 * ((i + m) * thumbnail_data.width + j + n) + 3]; | ||||
|                         } | ||||
|                     } | ||||
|                     r = std::clamp(0, r / sw / sh, 255); | ||||
|                     g = std::clamp(0, g / sw / sh, 255); | ||||
|                     b = std::clamp(0, b / sw / sh, 255); | ||||
|                     a = std::clamp(0, a / sw / sh, 255); | ||||
|                     small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 0] = (unsigned char)r; | ||||
|                     small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 1] = (unsigned char)g; | ||||
|                     small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 2] = (unsigned char)b; | ||||
|                     small_pixels[4 * (i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh) + 3] = (unsigned char)a; | ||||
|                     //memcpy((void*)&small_pixels[4*(i / sw * PLATE_THUMBNAIL_SMALL_WIDTH + j / sh)], thumbnail_data.pixels.data() + 4*(i * thumbnail_data.width + j), 4);
 | ||||
|                 } | ||||
|             } | ||||
|             size_t small_png_size = 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stone Li
						Stone Li