Se întâmplă ca site-ul să încarce imagini cu un fundal uniform și este necesar să-l înlocuiască automat (fundalul) cu unul transparent.
Adesea, o astfel de caracteristică este necesară pentru fotografiile de bunuri din magazinul online, imagini care se suprapun cu fondul corporativ și alte fotografii care nu strică designul site-ului. Tăiați fiecare fotografie manual de Photoshop este destul de trist, dar există metode php cu care poate fi "pus în flux".
Cum funcționează
Funcția caută pixeli după pixeli unde se termină culoarea omogenă. După ce toate coordonatele sunt calculate - funcția taie pur și simplu tot ce este în afara.
Înlocuirea unui fundal alb cu unul transparent este posibilă numai dacă imaginea de ieșire este salvată în format PNG sau GIF. Noile formate WebP și BPG cu suport pentru transparență vor face.
Înainte de a șterge fundalul, este întotdeauna mai bine să redimensionați o imagine mare. Dacă faceți acest lucru după - granițele pot fi distorsionate.
Înlocuirea fundalului, exemplu de bash
Pentru a șterge un fundal în ImageMagick, există un operator -trim. Se taie imaginea în funcție de culoarea specificată:
Înainte de a decupa JPEG-ul standard este convertit în PNG. În JPEG pierdut, fundalul nu va fi uniform. Pixelii vecini diferă, de obicei, puțin în culoare. De exemplu: alb, gri deschis, albastru deschis. Argumentul fuzz este setat la> 0 pentru a permite funcțiilor să citească culorile adiacente pentru a fi aceleași.
Înlocuirea fundalului, un exemplu în PHP
Exemplu de decupare a unui fundal alb pe o imagine (fișierul de intrare: image.jpg, output - trimmed.png):
Operatorul borderImage desenează un cadru 1x1 în jurul imaginii pe culoarea de fundal, după care operatorul trimImage îl împachetează împreună cu marginea.
Atenție vă rog! Operatorul trimImage funcționează dacă Imagick este compilat cu versiunea ImageMagick nu mai mică de 6.2.9.
Cum de a face fundalul omogen
În mod similar, puteți înlocui fundalul eterogen cu unul omogen când convertiți de la JPEG la PNG:
În acest exemplu, fiecare pixel al fundalului va fi umplut cu o singură culoare - un pixel cu coordonate (0; 0).
Multe exemple de funcționare a codului
Cum se poate verifica tăierea fundalului cu biblioteca Imagick aici. Instrumentul online înlocuiește orice fundal omogen cu unul transparent, ca și cu acest măr. Iată un exemplu cu fundal negru și forme complexe pentru tuns (păr). Desigur, poate exista un cadru alb mic. Dar pare destul de decent. Chiar și mustața unei pisici sculptură cu un bang.
- Pentru a elimina fundalul solid dintr-o imagine, puteți utiliza operatorul
-trim sau trimImage. - Verificați modul în care se efectuează eliminarea fundalului cu Imagick aici.
- Imaginea de ieșire trebuie salvată în oricare dintre formatele cu suport pentru transparență: PNG, GIF, WebP, BPG.