ПредишенСледващото

След като се сблъскват с вълшебната грешка, причината за която не е било възможно да се намери почти един месец. Така, че има причина да го играят, дори не може да се справи. Клиент постоянно се оплаква, че изображенията се режат правилно, но все пак по-непредсказуем своя страна ...

Същността на проекта е фактът, че на потребителите да качват снимки, които ги придружават с кратки разкази, следвани от модераторите да проверят съдържанието на съответните теми ресурс изрязани снимки на желаното съотношение на страните и да публикуват тези истории.

Буквално от първите дни на освобождаването на проекта в производството, ние започнахме да получава жалби от модераторите. Те се оплакват, че снимките са откъснати не както се очаква, понякога се появяват черни ивици, понякога снимките изведнъж се обръщат, а понякога и да не се случва някакви промени след подстригване.

За да изрежете изображение библиотека използва Джанго образ-изрязване. което позволява Django изображения администратор култури, използващи JQuery Jcrop плъгин.

Тъй като грешката не може да успее да се възпроизвеждат, те започват да вярват, че причината се крие някъде в страната на клиента. За две и половина седмици търсят грешки са опитвали малко по-малко от всички комбинации от различни браузъри и операционни системи, включително и по-стари версии на браузъри. Но за да се възпроизведе грешката все още не може да успее.

Междувременно nemenee, усърден тестване на изображение за изрязване на различни браузъри разкри придружаващия грешка. От браузъра, по пътя, който е независим. Productions сървъра е оптимизирана за голям брой посетители. Самият проект представляваше възстано статичен уеб сайт, Nginx кеширани ома; малък API за добавяне и истории за търсене; и административен интерфейс за предварителна модерация истории и регенерация статично съдържание.

Стана така, че Nginx е твърде трудно да се справят с кеширане и доста често след изрязване в администраторския шоуто стар (не прекъсвайте), след което модераторът отново и отново намали на снимката, както и в резултат на оригиналното изображение се нарязва на несъществуващи координати. Съответно, изходът е izkromsanoe изображение с черни ивици, а когато кеша е актуализиран става забележима.

, При която проблемът за показване на стария образ изчезна след резитба. В администраторски показва следната картинка дисплей HTML код:

Грешка е намерена и отстранени. Повтори не трябва. Можете да празнуват победа.

Само седмица по-късно, след sabmita промени в производството, от модераторите отново се оплака на неправилно изрежете изображението. За щастие, този път те са ясно означени върху изображението, което се възпроизвежда неправилна резитба и изпращане на тази снимка по електронна поща.

Отваряне на писмото, аз отворих изображението в нов раздел и да го спаси. Започнала да тества в скитничество д - грешка не се възпроизвежда, изображението се почиства, ако е необходимо, не се върти и не се появяват черни ивици. Проверих същата картина на този на производствения - не играе. Номерът е, че е необходимо да се свали точно изображение. и не се пази от буквите. След получаване на оригиналното изображение, грешката става редовна игра.

В графичните изображения на допълнителна мета информация може да се съхранява във формат EXIF. Къде може да съдържа, наред с други неща за информацията за ориентация на изображението. Exif изтегляне на файла, след като стана ясно, защо грешката се възпроизвежда върху него.

Exif Ориентация етикет описва ориентацията на изображението, когато се покажат, като се използват стойностите от 1 до 8:

Интуитивно, по примера на камерата, може да има 4 различни ориентации на маркера:

Когато запазвате изображение с помощта PIL всички Exif метаданни са изтрити, така че няма мета-информацията, съхранявана на изображението вече не се върти, когато се покажат и остава такава, каквато е. Т.е. от гледна точка на потребителя на - непредсказуем завой.

От PIL изтрива мета информация, когато запазите изображение, изображението ще се завърти в присъствието на ориентацията на себе си маркер.

Тази функция проверява информацията за завъртане на изображението, а ако е налице, завъртите картината на съответния ъгъл. Запазването изображение мета информация се изтрива и следователно, дори ако Exif ориентация маркер не е fotoapparatny (3, 6, 8) и отразената (2, 4, 5, 7). Картината ще бъде такова, че той наистина е, и ако е необходимо, модераторите ще могат да го включите, тъй като те се нуждаят.

Ето една проста функция решен тази коварна грешка.

За целите на яснота, ние представяме пример за неправилна изрязване поради кеширане, както и различното поведение на изображението с и без Exif ориентация. Тъй като оригиналното изображение ще използва известния Лена. но за повече значителни промени, а не неговата канонична версия на 512x512, правоъгълно изображение. За да работите с Exif информацията, използвайте командния ред помощна програма exiftool на.

Вземете един портрет, ориентирани към изображение, и се опитват да го нарежете на два пъти в един и същи преглед изображение.

Тук е обрат ..., макс живеят

Модератор изрежете изображението, а след това можете да опресните страницата, за да заредите отново същото нещо визуализации. Модератор клипове образа за втори път, мислещи в същото време, че промените по някаква причина, не са запазени.

Тук е обрат ..., макс живеят

Но в действителност, на снимката за първи път скъсен правилно.

Тук е обрат ..., макс живеят

Като повтарят подстригване координати на изображението, се случва следното.

Тук е обрат ..., макс живеят

И така нататък, с всяка следваща подстригване на оригиналното изображение ще продължи да режете. Ето защо, случайна параметър GET дава възможност да се справят с кеширане и заредите необходимия преглед за правилното обработване на изображението.

Създаване на първоначалното изображение със съотношение пейзаж аспект, без предварително определена ориентация на маркера.

Тук е обрат ..., макс живеят

Посочете мета информацията в изображението.

Копирайте изображението и установяване на ориентацията на маркера 6.

Тук е обрат ..., макс живеят
За да видите своя отворите изображението в нов раздел.

Сега нека да видим какво мета информация, съдържаща се в този образ.

Както се вижда на ориентацията на маркера избран 90 върти CW.

С изтеглянето на данните с изображения на услугата - може да се види различно поведение:

Снимка без ориентация на този маркер не се завърта и се показват, тъй като е. озеленена съотношение.

Тук е обрат ..., макс живеят

Маркирани ориентация на изображението се завърта, когато се покажат в съотношение портрет аспект.

Тук е обрат ..., макс живеят

Втората картинка изглежда като имате нужда от модератор и без да се съмнява изрязаното изображение.

Тук е обрат ..., макс живеят

Изрязване на изображението, както е показано по-горе, модераторът очаква следните резултати.

Тук е обрат ..., макс живеят

Въпреки това, тъй координати са дадени за портретна ориентация, и изображението е с размери пейзажна ориентация, резултатът е неочаквано. Снимката се завърта и има черна лента по-долу на снимката.

Тук е обрат ..., макс живеят

След използване на предварително завъртите изображението, както и премахването на мета информация, това неочаквано поведение изчезне, изображението се показва и какво от това, че наистина е така. С изтеглянето на изображението, за да маркирате ориентация, като същевременно се поддържа сървъра веднага се спасил завъртян.

Т.е., ако модератор намалява портрет на изображението.

Тук е обрат ..., макс живеят

Тук е обрат ..., макс живеят

Той получава правилния резултат портрета.

Тук е обрат ..., макс живеят

Подкрепете проекта - споделете линка, благодаря!