Created
October 18, 2024 03:02
a simple script for image compression
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[1/16] MAX_0055.JPG - Trying quality 95, file size: 12508.51 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 90, file size: 8960.88 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 85, file size: 7223.50 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 80, file size: 6216.38 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 75, file size: 5530.90 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 70, file size: 5056.93 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 65, file size: 4646.98 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 60, file size: 4316.68 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 55, file size: 4048.33 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 50, file size: 3828.65 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 45, file size: 3617.53 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 40, file size: 3379.41 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 35, file size: 3156.40 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 30, file size: 2893.35 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 25, file size: 2614.09 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 20, file size: 2301.08 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 15, file size: 1956.54 KB\n", | |
"[1/16] MAX_0055.JPG - Trying quality 10, file size: 1536.57 KB\n", | |
"Compressed MAX_0055.JPG to 1536.57 KB with quality 10\n", | |
"[2/16] MAX_0056.JPG - Trying quality 95, file size: 12573.48 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 90, file size: 9011.03 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 85, file size: 7265.15 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 80, file size: 6252.13 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 75, file size: 5562.14 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 70, file size: 5086.24 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 65, file size: 4673.96 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 60, file size: 4340.69 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 55, file size: 4070.60 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 50, file size: 3850.16 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 45, file size: 3637.79 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 40, file size: 3398.04 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 35, file size: 3173.41 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 30, file size: 2909.45 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 25, file size: 2628.42 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 20, file size: 2313.17 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 15, file size: 1966.37 KB\n", | |
"[2/16] MAX_0056.JPG - Trying quality 10, file size: 1543.44 KB\n", | |
"Compressed MAX_0056.JPG to 1543.44 KB with quality 10\n", | |
"[3/16] MAX_0057.JPG - Trying quality 95, file size: 12937.47 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 90, file size: 9282.48 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 85, file size: 7488.64 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 80, file size: 6448.34 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 75, file size: 5739.95 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 70, file size: 5246.96 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 65, file size: 4822.48 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 60, file size: 4478.99 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 55, file size: 4198.64 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 50, file size: 3971.21 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 45, file size: 3752.15 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 40, file size: 3504.76 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 35, file size: 3273.40 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 30, file size: 3001.20 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 25, file size: 2711.36 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 20, file size: 2385.87 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 15, file size: 2028.31 KB\n", | |
"[3/16] MAX_0057.JPG - Trying quality 10, file size: 1589.89 KB\n", | |
"Compressed MAX_0057.JPG to 1589.89 KB with quality 10\n", | |
"[4/16] MAX_0058.JPG - Trying quality 95, file size: 12974.12 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 90, file size: 9286.67 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 85, file size: 7484.61 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 80, file size: 6442.66 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 75, file size: 5730.59 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 70, file size: 5238.55 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 65, file size: 4813.40 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 60, file size: 4470.61 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 55, file size: 4190.96 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 50, file size: 3963.08 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 45, file size: 3744.65 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 40, file size: 3497.35 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 35, file size: 3266.60 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 30, file size: 2994.88 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 25, file size: 2705.47 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 20, file size: 2381.52 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 15, file size: 2023.27 KB\n", | |
"[4/16] MAX_0058.JPG - Trying quality 10, file size: 1585.90 KB\n", | |
"Compressed MAX_0058.JPG to 1585.90 KB with quality 10\n", | |
"[5/16] MAX_0059.JPG - Trying quality 95, file size: 12775.05 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 90, file size: 9137.58 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 85, file size: 7364.24 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 80, file size: 6338.35 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 75, file size: 5639.33 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 70, file size: 5155.38 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 65, file size: 4738.31 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 60, file size: 4401.70 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 55, file size: 4126.80 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 50, file size: 3903.79 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 45, file size: 3688.96 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 40, file size: 3446.13 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 35, file size: 3219.70 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 30, file size: 2953.82 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 25, file size: 2669.07 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 20, file size: 2350.69 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 15, file size: 1998.64 KB\n", | |
"[5/16] MAX_0059.JPG - Trying quality 10, file size: 1568.35 KB\n", | |
"Compressed MAX_0059.JPG to 1568.35 KB with quality 10\n", | |
"[6/16] MAX_0060.JPG - Trying quality 95, file size: 12756.52 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 90, file size: 9125.70 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 85, file size: 7354.49 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 80, file size: 6330.10 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 75, file size: 5631.93 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 70, file size: 5148.72 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 65, file size: 4732.66 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 60, file size: 4396.13 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 55, file size: 4122.18 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 50, file size: 3899.44 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 45, file size: 3684.88 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 40, file size: 3442.37 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 35, file size: 3215.99 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 30, file size: 2949.46 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 25, file size: 2665.97 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 20, file size: 2347.13 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 15, file size: 1995.53 KB\n", | |
"[6/16] MAX_0060.JPG - Trying quality 10, file size: 1566.19 KB\n", | |
"Compressed MAX_0060.JPG to 1566.19 KB with quality 10\n", | |
"[7/16] MAX_0062.JPG - Trying quality 95, file size: 12587.92 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 90, file size: 9002.89 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 85, file size: 7257.99 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 80, file size: 6246.31 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 75, file size: 5559.70 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 70, file size: 5084.88 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 65, file size: 4673.86 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 60, file size: 4342.34 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 55, file size: 4072.23 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 50, file size: 3852.66 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 45, file size: 3641.61 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 40, file size: 3402.08 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 35, file size: 3179.22 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 30, file size: 2915.84 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 25, file size: 2635.33 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 20, file size: 2320.93 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 15, file size: 1973.50 KB\n", | |
"[7/16] MAX_0062.JPG - Trying quality 10, file size: 1551.10 KB\n", | |
"Compressed MAX_0062.JPG to 1551.10 KB with quality 10\n", | |
"[8/16] MAX_0063.JPG - Trying quality 95, file size: 12521.67 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 90, file size: 8962.36 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 85, file size: 7228.96 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 80, file size: 6224.57 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 75, file size: 5542.55 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 70, file size: 5069.65 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 65, file size: 4659.67 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 60, file size: 4328.98 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 55, file size: 4060.42 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 50, file size: 3841.71 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 45, file size: 3630.86 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 40, file size: 3391.97 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 35, file size: 3168.82 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 30, file size: 2906.01 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 25, file size: 2626.13 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 20, file size: 2312.50 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 15, file size: 1966.54 KB\n", | |
"[8/16] MAX_0063.JPG - Trying quality 10, file size: 1545.11 KB\n", | |
"Compressed MAX_0063.JPG to 1545.11 KB with quality 10\n", | |
"[9/16] MAX_0064.JPG - Trying quality 95, file size: 12504.43 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 90, file size: 8940.65 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 85, file size: 7210.27 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 80, file size: 6208.69 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 75, file size: 5526.35 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 70, file size: 5054.87 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 65, file size: 4645.57 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 60, file size: 4316.17 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 55, file size: 4047.67 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 50, file size: 3829.04 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 45, file size: 3618.63 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 40, file size: 3379.89 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 35, file size: 3157.55 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 30, file size: 2895.95 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 25, file size: 2617.14 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 20, file size: 2303.59 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 15, file size: 1959.90 KB\n", | |
"[9/16] MAX_0064.JPG - Trying quality 10, file size: 1540.64 KB\n", | |
"Compressed MAX_0064.JPG to 1540.64 KB with quality 10\n", | |
"[10/16] MAX_0065.JPG - Trying quality 95, file size: 13586.82 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 90, file size: 9729.38 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 85, file size: 7847.99 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 80, file size: 6762.39 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 75, file size: 6019.26 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 70, file size: 5505.81 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 65, file size: 5061.67 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 60, file size: 4704.00 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 55, file size: 4411.78 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 50, file size: 4174.24 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 45, file size: 3946.48 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 40, file size: 3686.94 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 35, file size: 3445.99 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 30, file size: 3160.56 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 25, file size: 2855.48 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 20, file size: 2513.75 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 15, file size: 2136.26 KB\n", | |
"[10/16] MAX_0065.JPG - Trying quality 10, file size: 1676.22 KB\n", | |
"Compressed MAX_0065.JPG to 1676.22 KB with quality 10\n", | |
"[11/16] MAX_0066.JPG - Trying quality 95, file size: 13851.72 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 90, file size: 9970.82 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 85, file size: 8055.89 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 80, file size: 6945.74 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 75, file size: 6182.09 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 70, file size: 5653.87 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 65, file size: 5196.30 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 60, file size: 4827.04 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 55, file size: 4526.03 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 50, file size: 4282.79 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 45, file size: 4048.43 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 40, file size: 3781.68 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 35, file size: 3533.51 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 30, file size: 3240.90 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 25, file size: 2927.80 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 20, file size: 2577.17 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 15, file size: 2189.85 KB\n", | |
"[11/16] MAX_0066.JPG - Trying quality 10, file size: 1719.36 KB\n", | |
"Compressed MAX_0066.JPG to 1719.36 KB with quality 10\n", | |
"[12/16] MAX_0067.JPG - Trying quality 95, file size: 13699.90 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 90, file size: 9838.08 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 85, file size: 7942.75 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 80, file size: 6845.83 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 75, file size: 6096.32 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 70, file size: 5575.30 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 65, file size: 5125.64 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 60, file size: 4762.39 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 55, file size: 4466.66 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 50, file size: 4225.86 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 45, file size: 3994.68 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 40, file size: 3731.98 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 35, file size: 3487.36 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 30, file size: 3198.21 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 25, file size: 2889.76 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 20, file size: 2544.01 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 15, file size: 2161.74 KB\n", | |
"[12/16] MAX_0067.JPG - Trying quality 10, file size: 1695.79 KB\n", | |
"Compressed MAX_0067.JPG to 1695.79 KB with quality 10\n", | |
"[13/16] MAX_0068.JPG - Trying quality 95, file size: 13847.81 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 90, file size: 9949.04 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 85, file size: 8035.35 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 80, file size: 6928.24 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 75, file size: 6167.37 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 70, file size: 5641.13 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 65, file size: 5185.55 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 60, file size: 4817.54 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 55, file size: 4517.78 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 50, file size: 4273.84 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 45, file size: 4039.21 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 40, file size: 3774.04 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 35, file size: 3526.07 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 30, file size: 3233.05 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 25, file size: 2919.18 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 20, file size: 2568.46 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 15, file size: 2181.37 KB\n", | |
"[13/16] MAX_0068.JPG - Trying quality 10, file size: 1710.16 KB\n", | |
"Compressed MAX_0068.JPG to 1710.16 KB with quality 10\n", | |
"[14/16] MAX_0069.JPG - Trying quality 95, file size: 13929.03 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 90, file size: 10021.01 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 85, file size: 8094.28 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 80, file size: 6975.27 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 75, file size: 6210.59 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 70, file size: 5679.35 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 65, file size: 5219.81 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 60, file size: 4849.13 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 55, file size: 4546.54 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 50, file size: 4300.30 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 45, file size: 4063.66 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 40, file size: 3795.49 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 35, file size: 3546.03 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 30, file size: 3250.78 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 25, file size: 2934.97 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 20, file size: 2581.86 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 15, file size: 2190.95 KB\n", | |
"[14/16] MAX_0069.JPG - Trying quality 10, file size: 1715.91 KB\n", | |
"Compressed MAX_0069.JPG to 1715.91 KB with quality 10\n", | |
"[15/16] MAX_0070.JPG - Trying quality 95, file size: 13971.01 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 90, file size: 10069.47 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 85, file size: 8138.95 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 80, file size: 7016.75 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 75, file size: 6250.09 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 70, file size: 5714.43 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 65, file size: 5252.23 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 60, file size: 4879.54 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 55, file size: 4574.87 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 50, file size: 4327.50 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 45, file size: 4088.74 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 40, file size: 3818.97 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 35, file size: 3567.14 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 30, file size: 3269.96 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 25, file size: 2952.47 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 20, file size: 2596.70 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 15, file size: 2205.09 KB\n", | |
"[15/16] MAX_0070.JPG - Trying quality 10, file size: 1726.76 KB\n", | |
"Compressed MAX_0070.JPG to 1726.76 KB with quality 10\n", | |
"[16/16] MAX_0071.JPG - Trying quality 95, file size: 14024.31 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 90, file size: 10103.44 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 85, file size: 8160.28 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 80, file size: 7032.38 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 75, file size: 6260.03 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 70, file size: 5721.53 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 65, file size: 5256.37 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 60, file size: 4882.28 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 55, file size: 4577.35 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 50, file size: 4329.00 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 45, file size: 4091.02 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 40, file size: 3820.34 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 35, file size: 3567.70 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 30, file size: 3270.36 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 25, file size: 2953.01 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 20, file size: 2597.85 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 15, file size: 2203.92 KB\n", | |
"[16/16] MAX_0071.JPG - Trying quality 10, file size: 1723.52 KB\n", | |
"Compressed MAX_0071.JPG to 1723.52 KB with quality 10\n" | |
] | |
} | |
], | |
"source": [ | |
"from PIL import Image\n", | |
"import os\n", | |
"\n", | |
"def compress_images_in_folder(folder_path, output_path, target_size_kb=500):\n", | |
" \"\"\"\n", | |
" Compress all images in a folder to a target size (in KB).\n", | |
"\n", | |
" :param folder_path: str, path to the input folder containing images\n", | |
" :param output_path: str, path to save the compressed images\n", | |
" :param target_size_kb: int, target size in KB for each image\n", | |
" \"\"\"\n", | |
" target_size_bytes = target_size_kb * 1024\n", | |
"\n", | |
" # Loop through all the files in the folder\n", | |
" for i, filename in enumerate(os.listdir(folder_path)):\n", | |
" if not filename.lower().endswith(('.jpg', '.jpeg', '.png')):\n", | |
" continue # Skip non-image files\n", | |
"\n", | |
" input_path = os.path.join(folder_path, filename)\n", | |
" output_file = os.path.join(output_path, filename)\n", | |
"\n", | |
" # Open the image\n", | |
" with Image.open(input_path) as img:\n", | |
" quality = 95 # Start with a high quality\n", | |
" step = 5 # Amount to decrease quality by if the file is too large\n", | |
"\n", | |
" # Compress until the file is below the target size\n", | |
" while True:\n", | |
" # Save the image with the current quality setting\n", | |
" img.save(output_file, format='JPEG', quality=quality)\n", | |
" # Check the file size\n", | |
" output_size = os.path.getsize(output_file)\n", | |
" print(f\"[{i+1}/{len(os.listdir(folder_path))}] {filename} - Trying quality {quality}, file size: {output_size / 1024:.2f} KB\")\n", | |
"\n", | |
" # If the file size is below the target, break the loop\n", | |
" if output_size <= target_size_bytes or quality <= 10:\n", | |
" break\n", | |
" # Reduce quality for the next iteration\n", | |
" quality -= step\n", | |
"\n", | |
" print(f\"Compressed {filename} to {output_size / 1024:.2f} KB with quality {quality}\")\n", | |
"\n", | |
"# Example usage:\n", | |
"FOLDER_PATH = r'C:\\Users\\Axioo Pongo\\Desktop\\yolo-agri\\yolo-agri\\images\\val'\n", | |
"OUTPUT_PATH = r'C:\\Users\\Axioo Pongo\\Desktop\\yolo-agri\\yolo-agri\\images\\val_compressed'\n", | |
"\n", | |
"compress_images_in_folder(FOLDER_PATH, OUTPUT_PATH, target_size_kb=500)" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.12.6" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment