155elkhorn commited on
Commit
0ff586f
·
0 Parent(s):

Duplicate from 155elkhorn/resize_color

Browse files
Files changed (4) hide show
  1. .gitattributes +35 -0
  2. README.md +13 -0
  3. app.py +66 -0
  4. requirements.txt +3 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Resize
3
+ emoji: 🐨
4
+ colorFrom: yellow
5
+ colorTo: yellow
6
+ sdk: gradio
7
+ sdk_version: 3.36.1
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: 155elkhorn/resize_color
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import cv2
3
+ import numpy as np
4
+ from PIL import Image
5
+
6
+ def hex_to_rgb(hex_code):
7
+ # Remove the '#' symbol if present
8
+ hex_code = hex_code.lstrip('#')
9
+
10
+ # Convert the hex code to RGB
11
+ return tuple(int(hex_code[i:i+2], 16) for i in (0, 2, 4))
12
+
13
+ def resize_and_overlay_image(input_image, reduction_percentage, shift_pixels, shift_pixels_ud, background_color):
14
+ # Check if the input image is empty
15
+ if input_image.size == 0:
16
+ return None
17
+
18
+ img = np.array(input_image)
19
+
20
+ # Check if the image has shape information
21
+ if img.ndim < 2:
22
+ return None
23
+
24
+ # Get the image dimensions
25
+ height, width = img.shape[:2]
26
+
27
+ # Calculate the new dimensions based on the reduction percentage
28
+ new_height = int(height * reduction_percentage / 100)
29
+ new_width = int(width * reduction_percentage / 100)
30
+
31
+ # Resize the image
32
+ resized_img = cv2.resize(img, (new_width, new_height))
33
+
34
+ # Convert the hex code to RGB
35
+ background_rgb = hex_to_rgb(background_color)
36
+
37
+ # Create a background image with the original image dimensions and specified color
38
+ background_img = np.ones((height, width, 3), dtype=np.uint8) * background_rgb
39
+
40
+ # Calculate the position to overlay the resized image on the background image
41
+ x = int((width - new_width) / 2) + int(shift_pixels)
42
+ y = int((height - new_height) / 2) + int(shift_pixels_ud)
43
+
44
+ # Overlay the resized image on the background image
45
+ background_img[y:y + new_height, x:x + new_width] = resized_img
46
+
47
+ # Return the resulting image as a NumPy array
48
+ return background_img
49
+
50
+ # Create the Gradio interface
51
+ iface = gr.Interface(
52
+ fn=resize_and_overlay_image,
53
+ inputs=[
54
+ gr.inputs.Image(type="pil", label="Input Image"),
55
+ gr.inputs.Slider(minimum=1, maximum=100, step=1, default=80, label="Percentage of Original"),
56
+ gr.inputs.Slider(minimum=-100, maximum=100, step=10, default=0, label="Shift Pixels Left / Right"),
57
+ gr.inputs.Slider(minimum=-100, maximum=100, step=10, default=0, label="Shift Pixels Up / Down"),
58
+ gr.inputs.Textbox(default="#f1f1f1", label="Background Color (Hex Code)")
59
+ ],
60
+ outputs=gr.outputs.Image(type="numpy", label="Result"),
61
+ title="Image Resizer",
62
+ description="Reduce the size of an image and overlay it on a colored background and shift it to the right."
63
+ )
64
+
65
+ if __name__ == "__main__":
66
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ opencv-python
3
+ numpy