|  | @@ -46,6 +46,17 @@ def analyzeANIFile(filePath):
 | 
	
		
			
				|  |  |              nowSize += subChunkSize
 | 
	
		
			
				|  |  |          return {"code":0,"msg":frameList,"frameRate":frameRate}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def CURPaletteFix(image):
 | 
	
		
			
				|  |  | +    # type: (Image.ImageFile.ImageFile) -> None
 | 
	
		
			
				|  |  | +    if (image.mode == 'P'):
 | 
	
		
			
				|  |  | +        palette = list(image.palette.getdata()[1])
 | 
	
		
			
				|  |  | +        for i in range(4, len(palette), 4):
 | 
	
		
			
				|  |  | +            if sum(palette[i:i + 3]) == 0:
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +            palette[i + 3] = 255
 | 
	
		
			
				|  |  | +        image.putpalette(palette, 'BGRA')
 | 
	
		
			
				|  |  | +        image = image.convert('RGBA')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  if __name__ == '__main__':
 | 
	
		
			
				|  |  |      OUTPUT_SIZE = (48,48)
 | 
	
		
			
				|  |  |      if len(sys.argv) < 2:
 | 
	
	
		
			
				|  | @@ -57,7 +68,8 @@ if __name__ == '__main__':
 | 
	
		
			
				|  |  |              logging.info('ANI文件分析完成,帧提取完成!')
 | 
	
		
			
				|  |  |              output = Image.new("RGBA", (OUTPUT_SIZE[0], OUTPUT_SIZE[1] * len(res["msg"])))
 | 
	
		
			
				|  |  |              for frameIndex in range(len(res["msg"])):
 | 
	
		
			
				|  |  | -                frameImage = Image.open(io.BytesIO(res["msg"][frameIndex]),formats=['cur']).convert('RGBA')
 | 
	
		
			
				|  |  | +                frameImage = Image.open(io.BytesIO(res["msg"][frameIndex]),formats=['cur'])
 | 
	
		
			
				|  |  | +                CURPaletteFix(frameImage)
 | 
	
		
			
				|  |  |                  extracted_frame = frameImage.resize(OUTPUT_SIZE)
 | 
	
		
			
				|  |  |                  position = (0, OUTPUT_SIZE[0] * frameIndex)
 | 
	
		
			
				|  |  |                  output.paste(extracted_frame, position)
 |