pick random frame from gifs
This commit is contained in:
		@@ -6,9 +6,7 @@ import random
 | 
				
			|||||||
import requests
 | 
					import requests
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import pyszuru
 | 
					import pyszuru
 | 
				
			||||||
 | 
					from PIL import Image, ImageSequence, UnidentifiedImageError
 | 
				
			||||||
from PIL import Image
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from epd.epd_config import palArr, epdArr, EPD_TYPES
 | 
					from epd.epd_config import palArr, epdArr, EPD_TYPES
 | 
				
			||||||
@@ -57,7 +55,7 @@ while not image_downloaded:
 | 
				
			|||||||
        img.close()
 | 
					        img.close()
 | 
				
			||||||
        image_downloaded = True
 | 
					        image_downloaded = True
 | 
				
			||||||
        print("[DEBUG] Image successfully verified.")
 | 
					        print("[DEBUG] Image successfully verified.")
 | 
				
			||||||
    except (PIL.UnidentifiedImageError, requests.exceptions.RequestException) as e:
 | 
					    except (UnidentifiedImageError, requests.exceptions.RequestException) as e:
 | 
				
			||||||
        print(
 | 
					        print(
 | 
				
			||||||
            f"[ERROR] Failed to process downloaded file (Error: {e}). Retrying with a new post..."
 | 
					            f"[ERROR] Failed to process downloaded file (Error: {e}). Retrying with a new post..."
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -81,6 +79,13 @@ while not image_downloaded:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Process and upload
 | 
					    # Process and upload
 | 
				
			||||||
    img = Image.open("image.jpg")
 | 
					    img = Image.open("image.jpg")
 | 
				
			||||||
 | 
					    if post.mime == "image/gif":
 | 
				
			||||||
 | 
					        print("[DEBUG] Detected GIF, selecting random frame.")
 | 
				
			||||||
 | 
					        # Seek to a random frame
 | 
				
			||||||
 | 
					        random_frame_index = random.randint(0, img.n_frames - 1)
 | 
				
			||||||
 | 
					        img.seek(random_frame_index)
 | 
				
			||||||
 | 
					        # Convert the frame to an RGB image to discard GIF palette and alpha for processing
 | 
				
			||||||
 | 
					        img = img.convert("RGB")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Get configuration from environment variables
 | 
					# Get configuration from environment variables
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user