Създайте миниатюри миниатюри изображения в PHP

Създайте миниатюри миниатюри изображения в PHP

Дневен ред - за оразмеряване на изображения и generatsiyathumbnails в pomoschiPHP .От тази тема достатъчно статии. Някои даде само една теория, някои просто практикуват, а някои не разбират изобщо какво написани.

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

Създаване на миниатюри PHP

На първо място, две неща. На първо място, аз ще използвам термина оригинални графични и платно миниатюри. Ако първият ясен, а след това на втория, ще обясня, че ние сме от оригиналното изображение ще се копира образа, създаден наново, което е, в действителност ще бъде създаден на платното за миниатюрите. На второ място, направете списък на имоти, че скриптът трябва да има.

Задачата - да се създаде сценарий за работа с изображения, със следните характеристики:

  1. Той трябва да работи с JPEG, GIF, PNG.
  2. Тя позволява да се намали снимката до определена височина или широчина
  3. Това ви позволява да създадете миниатюри (миниатюри) снимки, се подчиняват на правилата:
    а) Ако ширината и височината на оригиналното изображение повече. от миниатюрите на платното, изображението трябва да бъде намалена, така че тя напълно е заета областта на миниатюрен платно. В този случай, ако някои от намалената картинката ще излезе извън рамките на миниатюрен платното, те трябва да бъдат отрязани.
    б) Ако ширината на изображението е по-голяма. от ширината на миниатюра на платното, а височината е по-малка. изображението е центрирана върху миниатюра платно, неговите изпъкнали части са отрязани и празните пространства са пълни с определен цвят.
    в) Ако височината на изображението повече. от височината на миниатюрен платното, а ширината е по-малко. изображението е центрирана върху миниатюра платно, неговите изпъкнали части са отрязани, а пространството се запълва с определен цвят.
    ж) Ако височината и ширината на изображението по-малък. от височината и ширината на платното миниатюрен, изображението е центрирана върху миниатюрите на платно, а свободното пространство е изпълнено с определения tsvetov.Funktsiya представени по-долу. Така че, нека сега разгледаме функция, която изпълнява всички елементи, изброени по-горе.

Линии 1-2. Инициализиране функция. $ Src - името на изходния файл, $ Цел - името на генерирания файл, ширината $, $ височина - ширина и височина в пиксели на генерираното изображение. Допълнителни параметри: $ RGB - цвета на фона, по подразбиране - черен, качество $ - качество на генерираните JPEG, по подразбиране - максималната (100).

Линия 3. Проверете дали има определен файл, и ако не е, функцията връща лъжа.

Линия 4: Извиква функцията getimagesize и получената маса се поставя в размер на $.

Line 5. Проверете в резултат на размера на изображението - ако тя не минава, а след това функцията връща лъжа.

String 6. Ако нарича функция ширината и височината премина нула, а след това една и съща функция връща лъжа.

String 7-8. Извадете оригиналното съотношение на мим-тип.

Редове 9-10. Според влачеха графични формати са имената на две функции за работа с изображения. Това е в подкрепа формат GIF, JPG и PNG.

String 11-12. Проверете дали съществуват такива функции, ние създаваме низ преди.

13. Call низа създадохме функция (което imagecreatefrom).

Ред 14. Ако функцията е била прехвърлена на височина, равна на нула, това означава, че е необходимо да не се създава миниатюри, но просто от изображение с определена максимална ширина.

Line 15. Compute новата височина изображението въз основа на входящи параметри и предава максималната ширина.

Ред 16. Създаване на празен образ на реалните цветове.

Редове 17-18. Функцията е на оригиналното изображение, везни и прехвърли новосъздадените платното (от линия 16).

Редове 19-20. Снимка ще бъдат записани във файла. В този случай, ако един файл във формат, функцията се нарича с качеството на трансфера на JPG за него.

Подобна линия 22. Линия 14 се смята само за случаите, когато широчината на нула е изпратена.

Редове 23-28. Ще дойда с редовете 15-20.

30. Ако низът премина нормално ширина и височина, а след това на следващия блок от код.

Редове 31-32. Тя създава образ на реалните цветове и пълни с желания цвят.

Ред 33. Ако височината и ширината на зареден изображението е по-малка от ширината и височината на миниатюрата на платното, след което ...

Редове 34-35. Ние изчисляваме позицията на вдлъбнатината в горната част и на ляво, за да поставите на оригиналното изображение върху умалено платното.

Редове 36-39. Копирайте оригиналните изображения върху миниатюрите на платно и го запишете във файл.

Ред 41. Ако ширината на оригиналното изображение е по-малка от широчината на платното, а височината на повече от ...

String 42-47. Приблизително същите, както в редовете 34-39.

Редове 49-55. Подобно на линия 41-47, но тук, в случаите, когато широчината на оригиналното изображение върху ширината на платното и височина по-малко.

Ред 57. По време на нея блок от код се отнася за случаите, когато ширината и височината на оригиналния по-голяма от ширината и височината на миниатюрата на платното.

Редове 58-61. Назначете нов ширина на изображението и, според него, пропорционално за пресмятане на височината. Тогава ние изчисли координатите на отстъп, че картината е по средата на платното.

Редове 62-67. Ако при преизчисляване в предходната алинея, се оказа, че височината е по-малка от височината на миниатюрата на платното, тук ние вече зададете нов височина на изображението и го изчисли въз основа на широчината. След това се изчислява координатите на отстъп, че картината е по средата на платното.

Редове 68-70. Създаване на нов истински цветно изображение и да копирате това да се намали на оригиналното изображение.

Редове 71-72. Получени последна точка на изображението сега се копира в миниатюри платното.

Редове 73-74 са вече познати - те запишете файла.

Редове 75-78. Свободна памет от изображения, създадени темпо.

И сега очевидният пример. След това мисля, че това е просто.