Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как ΡΠΆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ качСство ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π΅ пострадало? ΠžΠ±Π·ΠΎΡ€ сСрвиса JpegMini

Вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства Π»ΠΈΠ±ΠΎ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ, Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ для ΠΌΠ½ΠΎΠ³ΠΈΡ…. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½ΠΎ ΠΌΠ°Π»ΠΎ мСста Π½Π° ТСстком дискС. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ приходится ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, для Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² сайтов ΠΈ Π±Π»ΠΎΠ³ΠΎΠ².

Π”ΡƒΠΌΠ°ΡŽ Π’Ρ‹ сами Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π΅ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ долгая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сайта. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΠΈ Ρ‡Π°Ρ‰Π΅ всСго просто уходят с Ρ‚Π°ΠΊΠΈΡ… рСсурсов, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ доТдавшись Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ странички.

Π’ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ нСоптимизированная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° (Ρ„ΠΎΡ‚ΠΎ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΠΆΠ°Ρ‚ΡŒ (ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ вСс) ΠΈ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌ самым высокой скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто лСнятся это Π΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚β€¦

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сСрвиса JPEGMini Π’Ρ‹ смоТСтС Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠΆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π² качСствС. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ это Π·Π° счСт примСнСния особого ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

  1. Как ΡΠΆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² JPEGMini
  2. Π Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ JPEGMini
  3. Π˜Ρ‚ΠΎΠ³

Всё бСсплатно, просто ΠΊΠ°ΠΊ ΠΏΡΡ‚ΡŒ ΠΊΠΎΠΏΠ΅Π΅ΠΊ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ разбСрСтся Π΄Π°ΠΆΠ΅ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ). БСрвис ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ вСс Ρ„ΠΎΡ‚ΠΎ Π»ΠΈΠ±ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π΄ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ допустимой Π½ΠΎΡ€ΠΌΡ‹, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ качСство изобраТСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ пострадаСт:

На Π³Π»Π°Π²Π½ΠΎΠΉ страничкС ΠΎΠ½Π»Π°ΠΉΠ½ сСрвиса Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° тСстовых фотографиях. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ Π½Π° Ρ„ΠΎΡ‚ΠΎ Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π»Π΅Π²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ отличия ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° ΠΎΡ‚ Π΅Π³ΠΎ сТатой вСрсии вСсом Π² 3, 5 Π° ΠΏΠΎΡ€ΠΎΠΉ ΠΈ Π² 8 Ρ€Π°Π· мСньшС! Никакой Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства Π’Ρ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅.

Как ΡΠΆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² JPEGMini

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ вСс фотографии, Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Upload Photo» и ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со своСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°:

Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° сСрвисС JPEGMini ΠΌΠΎΠΆΠ½ΠΎΒ Π±Π΅Π· рСгистрации, ΠΎΠ΄Π½Π°ΠΊΠΎ рСгистрация ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Β Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для Π½ΠΈΡ… Π°Π»ΡŒΠ±ΠΎΠΌΡ‹, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Ρ„ΠΎΡ‚ΠΎ Π½Π° популярных сСрвисах Picasa, Flickr, Facebook!

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ„ΠΎΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π¦ΠΈΡ„Ρ€Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ Π½Π° красном Ρ„ΠΎΠ½Π΅, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎ сколько Ρ€Π°Π· Π±Ρ‹Π» ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ вСс Ρ„ΠΎΡ‚ΠΎ, Π° шкала с показатСлями прямо ΠΏΠΎΠ΄ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ значСния этого. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС вСс Ρ„ΠΎΡ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΡΡ практичСски Π² Π΄Π²Π° Ρ€Π°Π·Π°, Π° качСство ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ пострадало (ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ снимка 4000Ρ…3000 px):

ЧудСса Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ) Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ„ΠΎΡ‚ΠΎ, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Download Full Res.Β». Π’Π°ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ водяных Π·Π½Π°ΠΊΠΎΠ² ΠΈ ΠΏΡ€. β€” всё Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатно, ΠΊΠ°ΠΊ ΠΈ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅.

ΠŸΡ€ΠΈ использовании ΠΎΠ½Π»Π°ΠΉΠ½ сСрвиса JPEGMini слСдуСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π²ΠΈΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ρ‡Π΅ΠΌ большС Ρ€Π°Π·ΠΌΠ΅Ρ€ исходного изобраТСния, Ρ‚Π΅ΠΌ с большСй ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ компрСссии ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сТато. Если для Ρ„ΠΎΡ‚ΠΎ с исходным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2 мСгапиксСля ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° 40 – 60%, Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании 8-мСгапиксСльного Ρ„ΠΎΡ‚ΠΎ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия составит 70% – 80%, ΠΈ всё это Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства! По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π° Π³Π»Π°Π·, Π’Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅.

JPEGMini – идСально Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ мСсто Π½Π° ТСстком дискС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΉ вСс хранящихся Π½Π° Π½Π΅ΠΌ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π² 2-3 Ρ€Π°Π·Π°. Для Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² Π±Π»ΠΎΠ³ΠΎΠ² этот сСрвис Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт Π² нСсколько ΠΊΠ»ΠΈΠΊΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JPEG Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, добиваясь Ρ‚Π΅ΠΌ самым быстрой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страничСк своСго сайта Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π Π΅Π΄Π°ΠΊΡ†ΠΈΠΈΒ JPEGMini

JPEGMini ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΉ:

  • браузСрная ΠΎΠ½Π»Π°ΠΉΠ½ вСрсия
  • дСсктопная вСрсия для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Windows ΠΈ iOS
  • вСрсия для сСрвСров (JPEGmini Server)
  • ΠΏΠ»Π°Π³ΠΈΠ½ для Lightroom ΠΈΒ Photoshop

Волько браузСрная вСрсия являСтся бСсплатной, Π·Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ вСрсии придСтся Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ:

Π˜Ρ‚ΠΎΠ³

Π”Ρ€ΡƒΠ·ΡŒΡ, JpegMiniΒ  ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… сСрвисов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сумССт ΡΠΆΠ°Ρ‚ΡŒ любоС Ρ„ΠΎΡ‚ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚! ΠšΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ, ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ своим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ (ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅).

Удалось Π»ΠΈ Π’Π°ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этого сСрвиса Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°? ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° сайтС

Π Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ составляСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° всСй страницы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ изобраТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

Бпонсор поста

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ PNG/JPG

Π― ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ sh-скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ процСсс сТатия.

#!/bin/bash
file=comp.flag
if [ -f "$file" ]; then
    option="-newer $file"
fi
find ./images/ -type f -not -path "./images/comp/*" ! -name "*-no-comp.*" $option -iname "*.png" -exec sh -c '
  png_file="${1/\/images\//\/images\/comp\/}"
  png_dir="$(dirname "$png_file")"
  mkdir -p "$png_dir"
  cp "$1" "${png_file}"
  optipng -o7 "${png_file}"
  advpng -z4 "${png_file}"
  pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "${png_file}"
' _ {} \;
find ./images/ -type f-not -path "./images/comp/*" ! -name "*-no-comp.*" $option -iregex '.*\.\(jpg\|jpeg\)' -exec sh -c '
  jpg_file="${1/\/images\//\/images\/comp\/}"
  jpg_dir="$(dirname "$jpg_file")"
  mkdir -p "$jpg_dir"
  cp "$1" "${jpg_file}"
  jpegoptim --all-progressive "${jpg_file}"
' _ {} \;
touch $file
echo "$(date)" > $file

Π­Ρ‚ΠΎΡ‚ скрипт сТимаСт изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства.

Он размСщаСтся рядом с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ images, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся ваши изобраТСния. РазбСрСмся, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π‘Π½Π°Ρ‡Π°Π»Π° скрипт провСряСт, сущСствуСт Π»ΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ„Π°ΠΉΠ» comp.flag. Если Ρ„Π°ΠΉΠ» сущСствуСт, ΠΎΠ½ устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -newer $file Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ option, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° для поиска Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ послС Π΄Π°Ρ‚Ρ‹ создания Ρ„Π°ΠΉΠ»Π° optimg.flag. Если Ρ„Π°ΠΉΠ» Π½Π΅ сущСствуСт, пСрСмСнная option Π±ΡƒΠ΄Π΅Ρ‚ пустой.

Π—Π°Ρ‚Π΅ΠΌ скрипт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find для рСкурсивного поиска Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

images ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅:

  • -type f. Π―Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
  • Π˜ΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° .png, .jpeg ΠΈΠ»ΠΈ .jpg.
  • -not -path. НС находятся Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ./images/comp. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° сТатыС изобраТСния, ΠΈ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠΎ Π½ΠΈΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ поиском ΠΈ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ снова.
  • ! -name "-no-comp.". ΠžΡΡ‚Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ссли Π΅Π³ΠΎ имя заканчиваСтся Π½Π°
    -no-comp
    .
  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих Ρ„Π°ΠΉΠ»ΠΎΠ² сцСнарий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свою ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Ρ‚ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ВмСсто этого ΠΌΡ‹ создадим Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ comp Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ images, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈ слоТим ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ изобраТСния. БоздаваСмая структура ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² comp Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ структуру ΠΏΠΎΠ΄ΠΊΠ°Ρ‚ΠΎΠ»ΠΎΠ³ΠΎΠ² Π² images.

Для Ρ„Π°ΠΉΠ»ΠΎΠ² PNG сначала ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ optipng для сТатия с самым высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (-o7). Π”Π°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ advpng для дальнСйшСго сТатия с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ сТатия 4 (-z4). И Π½Π°ΠΊΠΎΠ½Π΅Ρ† pngcrush

для удалСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ бСзопасно ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°.

Для Ρ„Π°ΠΉΠ»ΠΎΠ² JPEG ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ jpegoptim для ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ со сТатиСм Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ (--all-progressive --strip-all).

ПослС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ всСх подходящих ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ сцСнарий пСрСсоздаСт Ρ„Π°ΠΉΠ» comp.flag. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ скрипт Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго запуска.

ВСсты Π½Π° сТатия

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… изобраТСния (3456β€Š x β€Š2234): ΠΎΠ΄Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ jpg ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2.2 ΠΌΠ±, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ png ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2,7 ΠΌΠ±. ΠŸΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡŽ Π°Ρ€Ρ…ΠΈΠ² с тСстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ тСсты Ρƒ сСбя.

ЗапускаСм скрипт ΠΈ смотрим Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сТатия.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ optipng Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ тСрпСния.

Π’Ρ‹Π²ΠΎΠ΄ Π² консоль
** Processing: ./images/comp/image-two.png
3456x2234 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 2664231 bytes
Input file size = 2666952 bytes
Trying:
  zc = 9  zm = 9  zs = 0  f = 0         IDAT size = 2374591
  zc = 9  zm = 8  zs = 0  f = 0         IDAT size = 2368803
  zc = 9  zm = 9  zs = 0  f = 1         IDAT size = 2142264
  zc = 9  zm = 8  zs = 0  f = 1         IDAT size = 2137390
  zc = 9  zm = 9  zs = 1  f = 1         IDAT size = 2134232
  zc = 9  zm = 8  zs = 1  f = 1         IDAT size = 2128765
  zc = 9  zm = 9  zs = 0  f = 4         IDAT size = 2074935
  zc = 9  zm = 8  zs = 0  f = 4         IDAT size = 2071117
  zc = 9  zm = 9  zs = 1  f = 4         IDAT size = 2055799
  zc = 9  zm = 8  zs = 1  f = 4         IDAT size = 2054390
  zc = 9  zm = 9  zs = 0  f = 5         IDAT size = 2046026
  zc = 9  zm = 8  zs = 0  f = 5         IDAT size = 2040193
  zc = 9  zm = 9  zs = 1  f = 5         IDAT size = 2031130
  zc = 9  zm = 8  zs = 1  f = 5         IDAT size = 2024568
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 1  f = 5         IDAT size = 2024568
Output IDAT size = 2024568 bytes (639663 bytes decrease)
Output file size = 2025345 bytes (641607 bytes = 24.
06% decrease) 2025345 2025345 100% ./images/comp/image-two.png (Bigger 2208631) 2025345 2025345 100% Warning: versions are different between png.h and png.c png.h version: 1.6.34 png.c version: 1.6.37 Recompressing IDAT chunks in ./images/comp/image-two.png Total length of data found in critical chunks = 2024625 Best pngcrush method = 10 (ws 15 fm 6 zl 9 zs 1) = 2055326 CPU time decode 1.074758, encode 16.759768, other 0.018592, total 17.899076 sec ./images/comp/image-one.jpg 3456x2234 24bit N Exif XMP JFIF [OK] 2158567 --> 1947377 bytes (9.78%), optimized.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ смогли ΡΠΆΠ°Ρ‚ΡŒ png Π΄ΠΎ 2.1 ΠΌΠ±, Π° jpg Π΄ΠΎ 1.9 ΠΌΠ±. ΠŸΡ€ΠΈ этом сохранив исходный Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΈ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ качСства.

Π›ΡƒΡ‡ΡˆΠ΅Π΅, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для сТатия jpg это JPEGmini Pro. Π˜ΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ cli для сСрвСров. Но ΠΊ соТалСнию ΠΎΠ½ΠΎ ΠΏΠ»Π°Ρ‚Π½ΠΎΠ΅. Π•Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сТатия 2.2 ΠΌΠ± β€”> 959 ΠΊΠ±.

Π Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² WebP

PNG ΠΈ JPG ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства. Однако, Π½Π° сСгодняшний дСнь сущСствуСт Π±ΠΎΠ»Π΅Π΅ соврСмСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ WebP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ эффСктивныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ сТатии ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ с Π΅Π΄Π²Π° Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΠ΅ΠΌ качСства.

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ WebP пСрСчислСно мноТСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° качСство ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ провСсти ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° сайтС https://squoosh.app.

Π― Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π» для сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

cwebp -mt -af -progress -m 6 -q 80 -pass 10 input.jpg -o output.webp

Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ JPG Ρ„Π°ΠΉΠ» input.jpg Π² Ρ„Π°ΠΉΠ» изобраТСния WebP с ΠΈΠΌΠ΅Π½Π΅ΠΌ output.webp. Команда Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ нСсколько ΠΎΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ процСссом кодирования:

  • -mt Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Β Π½Π° многоядСрных процСссорах.
  • -af Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ, которая примСняСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности сТатия.
  • -progress Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»Π°.
  • -m 6 устанавливаСт максимальноС количСство сСгмСнтов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² процСссС кодирования, Ρ€Π°Π²Π½Ρ‹ΠΌ 6, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сТатия Π·Π° счСт увСличСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ кодирования.
  • -q 80 устанавливаСт коэффициСнт качСства Π½Π° 80, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия ΠΈ влияСт Π½Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ качСство Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния.
  • -pass 10 устанавливаСт число ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² кодирования Ρ€Π°Π²Π½Ρ‹ΠΌ 10, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сТатия Π·Π° счСт увСличСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ кодирования.
-lossless позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сТатиС Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ. Но Ρ‚ΠΎΠ³Π΄Π° вашС Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ сущСствСнно тяТСлСС исходного.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² наш скрипт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² WebP.

find ./images/comp -type f -iregex '.*\.\(jpg\|jpeg\|png\)' -not -iregex '.*no-comp\.\(jpg\|jpeg\|png\)' $option -exec sh -c '
  webp_file="${1/\/images\/comp\//\/images\/webp\/}"
  webp_dir="$(dirname "$webp_file")"
  mkdir -p "$webp_dir"
  cwebp -mt -af -progress -m 6 -q 75 -pass 10 "$1" -o "${webp_file%. *}.webp"
' _ {} \;

ΠœΡ‹ Π±Π΅Ρ€Π΅ΠΌ сТатыС изобраТСния ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ comp ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΈΡ… Π² WebP, складывая Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ webp. Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сТатия, Π²Ρ‹ всСгда смоТСтС ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ изобраТСния с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

ВСсты прСобразования

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ наши экспСрСмСнты со сТатиСм. Π’Π΅ΠΏΠ΅Ρ€ΡŒ соТмСм наши Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 2,7 ΠΌΠ± ΠΈ 2.2 Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ WebP с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ качСства:

  • -q 90: Π Π°Π·ΠΌΠ΅Ρ€ 325 ΠΊΠ±.
  • -q 85: Π Π°Π·ΠΌΠ΅Ρ€ 267 ΠΊΠ±.
  • -q 80: Π Π°Π·ΠΌΠ΅Ρ€ 229 ΠΊΠ±.
  • -q 75: Π Π°Π·ΠΌΠ΅Ρ€ 200 ΠΊΠ±.
  • -q 70: Π Π°Π·ΠΌΠ΅Ρ€ 191 ΠΊΠ±.
  • -q 60: Π Π°Π·ΠΌΠ΅Ρ€ 176 ΠΊΠ±.
  • -q 50: Π Π°Π·ΠΌΠ΅Ρ€ 163 ΠΊΠ±.
  • -q 40: Π Π°Π·ΠΌΠ΅Ρ€ 147 ΠΊΠ±.
  • -q 30: Π Π°Π·ΠΌΠ΅Ρ€ 129 ΠΊΠ±.
  • -q 20: Π Π°Π·ΠΌΠ΅Ρ€ 115 ΠΊΠ±.
  • -q 10: Π Π°Π·ΠΌΠ΅Ρ€ 90 ΠΊΠ±.
  • -q 1: Π Π°Π·ΠΌΠ΅Ρ€ 70 ΠΊΠ±. Для экстрСнных случаСв. НапримСр, Π²Ρ‹ Π·Π°Π±Π»ΡƒΠ΄ΠΈΠ»ΠΈΡΡŒ Π² лСсу ΠΈ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΠΎ спутниковой сСти πŸ˜…

Nginx

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠΌ nginx ΠΏΡ€ΠΈ запросС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ сначала ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ WebP Ρ„Π°ΠΉΠ», ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ сТатый PNG/JPG, Π° Ссли ΠΈ сТатого Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». (/images/)(.+)\.(png|jpe?g)$ { add_header Cache-Control ‘public,max-age=31536000’; alias /images; set $webp_image_subdir «/webp/»; set $comp_image_subdir «/comp/»; set $basename $2; try_files $webp_image_subdir$basename$webp_suffix $comp_image_subdir$basename.$3 $uri; }

Π”Π°Π½Π½Ρ‹ΠΉ location ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС запросы ΠΊ адрСсам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с /images/, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт любоС количСство символов, Π·Π°Ρ‚Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° png/jpeg/jpg.

Для запросов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… этому ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° alias ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ локальной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /images.
  • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ set Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ…. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $webp_image_subdir устанавливаСтся Π² /webp/, Π° пСрСмСнная $basename устанавливаСтся Π² Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½ΡƒΡŽ подстроку шаблона рСгулярного выраТСния (Ρ‚. Π΅. имя Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ).
  • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° try_files пытаСтся ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Webp-Π²Π΅Ρ€ΡΠΈΡŽ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° изобраТСния, добавляя ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ $webp_image_subdir ΠΈ $basename суффикс .webp. Если NGINX смоТСт Π½Π°ΠΉΡ‚ΠΈ Webp-Π²Π΅Ρ€ΡΠΈΡŽ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° изобраТСния, ΠΎΠ½ отдаст Π΅Π³ΠΎ. Если ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ WebP-Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‚ΠΎ отдаст сТатый JPG/PNG, Ссли ΠΈ сТатого Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎ отдаст Π½Π΅ сТатоС.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΡ‚ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ скрипту ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ я ΠΏΡ€ΠΈΡˆΠ΅Π». Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ оставляйтС свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.

Π‘ΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства

ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ сюда изобраТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ сТатиС

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ этот инструмСнт

5 Π·Π²Π΅Π·Π΄ 4 Π·Π²Π΅Π·Π΄Ρ‹ 3 Π·Π²Π΅Π·Π΄Ρ‹ 2 Π·Π²Π΅Π·Π΄Ρ‹ 1 Π·Π²Π΅Π·Π΄Π°.

БыстроС сТатиС

ΠœΠΎΡ‰Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сТатия. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сТатиС всСх Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

ВсС Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ с Π½Π°ΡˆΠΈΡ… сСрвСров Ρ‡Π΅Ρ€Π΅Π· 2 часа.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ нСсколько ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ изобраТСния ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ….

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π­Ρ‚ΠΎΡ‚ инструмСнт ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ Π½Π΅ трСбуСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π»Π΅Π³ΠΊΠΎ ΡΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния.

ΠœΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Image Compressor ΠΎΠ½Π»Π°ΠΉΠ½ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈΠ· любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Как ΡΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½?

  1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΆΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Image Compressor.
  2. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр всСх Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Image Compressor.
  3. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ°.
  4. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ изобраТСния ΠΈΠ· списка.
  5. НаконСц, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ сТатыС изобраТСния ΠΈΠ· Image Compressor.

Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ сТатия изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства Π½Π° Π΄Π°Π½Π½ΠΎΠΌ компрСссорС. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого компрСссора Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° этом сТатом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства инструмСнта.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта сТатия Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства. Π­Ρ‚ΠΎ быстрый ΠΈ простой способ сТатия изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° этом Π»ΡƒΡ‡ΡˆΠ΅ΠΌ сТатом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства инструмСнта. Π’Ρ‹Π±Ρ€Π°Π² изобраТСния Π² инструмСнтС, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ этот инструмСнт автоматичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ всС Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ изобраТСния Π² инструмСнтС с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ„Π°ΠΉΠ»Π° изобраТСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ° этого инструмСнта. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΎΠ½Π»Π°ΠΉΠ½. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ этого инструмСнта. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² инструмСнт большС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΆΠ°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ. ПослС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ сТатия Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС сТатыС изобраТСния Π½Π° локальноС устройство. НаконСц, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот инструмСнт сТатия изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΎΠ½Π»Π°ΠΉΠ½ Π² соотвСтствии с вашими потрСбностями.

  1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° инструмСнтС сТатия изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства.
  2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² компрСссорС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.
  3. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ° ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ.
  4. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ изобраТСния ΠΈΠ· списка.
  5. НаконСц, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ сТатыС изобраТСния ΠΈΠ· инструмСнта сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства.

Как ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python (2022)

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ. Π’Π΅Ρ€ΠΌΠΈΠ½ Β«ΡΠΆΠ°Ρ‚ΡŒΒ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относится ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Β«ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Β» относится ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ фактичСского изобраТСния, содСрТащСгося Π² Ρ„Π°ΠΉΠ»Π΅.

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния) Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡΠΆΠ°Ρ‚ΠΈΡŽ Ρ„Π°ΠΉΠ»Π°. Но ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° изобраТСния Π±Π΅Π· измСнСния фактичСского Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния. Π­Ρ‚ΠΎ дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ сниТСния качСства изобраТСния (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ сТатиС с потСрями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ качСство «тСряСтся»).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим использованиС сТатия с потСрями для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°. Однако ΠΎΠ±Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pillow

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Pillow являСтся ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ PIL (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Python). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° PIL устарСла ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 2018 Π³ΠΎΠ΄Ρƒ. Pillow прСдоставляСт Π½Π°Π±ΠΎΡ€ инструмСнтов для чтСния, записи ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… изобраТСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pillow для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, измСнСния Ρ†Π²Π΅Ρ‚Π°, ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ.

Основой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pillow являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PIL Image. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт Pillow. Он прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для чтСния, записи ΠΈ выполнСния сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Как ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим основной ΠΌΠ΅Ρ‚ΠΎΠ΄ сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pillow.

ΠΏΠΈΠΏ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΡƒΡˆΠΊΡƒ
 
ΠΈΠ· изобраТСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° PIL
Π΄Π΅Ρ„ сТатиС (Ρ„Π°ΠΉΠ»_изобраТСния):
    
    ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ = os.path.join(os.getcwd(), image_file)
    ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = Image.open (ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ)
    image.save ("сТатый Ρ„Π°ΠΉΠ»-изобраТСния",
                 "JPEG",
                 ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = Π˜ΡΡ‚ΠΈΠ½Π°,
                 качСство = 10)
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ
 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PIL Image, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» изобраТСния ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сохранили ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½ΠΎ скоррСктировали Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ качСства изобраТСния ΠΏΡ€ΠΈ сохранСнии. Если исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ качСство 100, Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ качСство 10.

Π­Ρ‚ΠΎ довольно большая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства, которая ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокоС качСство изобраТСния, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ число для значСния качСства.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ выполняСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AbstractAPI

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, особСнно Ссли ваши изобраТСния ΡƒΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, β€” это использованиС стороннСго API сТатия ΠΈΠ»ΠΈ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния. Π­Ρ‚ΠΈ API ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ всС популярныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ изобраТСния png, jpg, gif, bmp ΠΈ Ρ‚. Π΄. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… API являСтся AbstractAPI.

AbstractAPI позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ простой запрос POST ΠΊ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ API. Π’Ρ‹ прСдоставляСтС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ URL-адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΆΠ°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сТатиС с потСрями для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· измСнСния Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΌΡ‹ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сТатиС с потСрями Π±Π΅Π· измСнСния ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сТатыС изобраТСния Π±Π΅Π· измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния

Π”Π°Π²Π°ΠΉΡ‚Π΅ быстро рассмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ AbstractAPI для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° изобраТСния.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ API

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° домашнюю страницу API ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ΠΠ°Ρ‡Π°Ρ‚ΡŒΒ». ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ учСтная запись Abstract API, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму.

Π‘Π΄Π΅Π»Π°Π² это, Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚Π΅ Π½Π° панСль управлСния API.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ запрос ΠΊ API

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ запросов Python для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ POST-запроса Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

api_url = "https://images.abstractapi.com/v1/"
api_key = ВАШ_API_KEY
Π·Π°Ρ‰ΠΈΡ‚Π° send_compress_image_request():
   ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ = {
       'Π°ΠΏΠΈ_ΠΊΠ»ΡŽΡ‡': Π°ΠΏΠΈ_ΠΊΠ»ΡŽΡ‡,
       'url': 'https://s3.amazonaws.com/static. abstractapi.com/test-images/dog.jpg',
       «с потСрями»: ΠΏΡ€Π°Π²Π΄Π°
   }
  ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
      ΠΎΡ‚Π²Π΅Ρ‚ = запросы. сообщСниС (api_url, params = params)
      ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΎΡ‚Π²Π΅Ρ‚. содСрТаниС)
  ΠΊΡ€ΠΎΠΌΠ΅ запросов.ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.RequestException ΠΊΠ°ΠΊ api_error:
      print(f"ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ API ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка: {api_error}")
      ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ SystemExit (api_error)
 

Π­Ρ‚ΠΎΡ‚ запрос Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JSON, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

{
  "ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ_Ρ€Π°Π·ΠΌΠ΅Ρ€": 205559,
  "исходная_высота":430,
  «исходная_ΡˆΠΈΡ€ΠΈΠ½Π°Β»: 1142,
  Β«ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ_Ρ€Π°Π·ΠΌΠ΅Ρ€Β»: 75101,
  "bytes_saved":130458,
  "конСчная_высота":430,
  «конСчная_ΡˆΠΈΡ€ΠΈΠ½Π°Β»: 1142,
  "url":"https://abstractapi-images.s3.amazonaws.com/8f2dd6392c524bc98313a89a24012b1f_dog.jpg"
}
 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ: original_height ΠΈ original_width Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ final_height ΠΈ final_width. Однако Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π±Ρ‹Π» ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ Π½Π° 130458 Π±Π°ΠΉΡ‚. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с потСрями Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сниТаСт качСство Ρ„Π°ΠΉΠ»Π°, достигая ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 10-20% ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°.

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ качСство, Ρ‡Π΅ΠΌ исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ качСства , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ большС сниТаСт качСство Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ объяснСния доступных Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

API Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ URL-адрСс Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½ AWS S3 AbstractAPI.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… способа выполнСния сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Python. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ использовали Pillow (Ρ„ΠΎΡ€ΠΊ PIL) для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° изобраТСния, сохранив Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ качСства для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ качСства изобраТСния.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Free Image Processing ΠΎΡ‚ AbstractAPI для выполнСния сТатия с потСрями Π² Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ изобраТСния.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Как ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ изобраТСния Π² Python?

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ изобраТСния Π² Python β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pillow. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PIL Image, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» изобраТСния. Π—Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ изобраТСния Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ качСства , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сниТаСт качСство ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ изобраТСния. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ качСства изобраТСния ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°.

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства Python?

Π•ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° способа ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСсколько пиксСлСй ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ эти пиксСли с сосСдними. Π’ΠΎ ΠΆΠ΅ самоС с апскСйлингом: Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ пиксСли Π½Π° основС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° интСрполяции.

Π›ΡŽΠ±Π°Ρ ΠΈΠ· этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ всСгда ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ качСства. Один ΠΈΠ· способов ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ качСства β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сТатиС Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ для сохранСния Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ качСство изобраТСния Π½Π° 100.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС с потСрями ΠΈ сТатиС Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ?

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π±Ρ‹Π» Π΄ΠΎ сТатия.