Skip to content

Instantly share code, notes, and snippets.

@algonacci
Created October 18, 2024 03:02
a simple script for image compression
Raw
{
"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