Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cięcie pliku graficznego według transparent png
Forum PHP.pl > Forum > PHP
KotWButach
Mam do was wielką prośbę, czy ktoś orientuje się czego szukać, użyć do napisania skryptu, który wziąłby plik PNG np taki: gdzie byłoby kilka kwadratów z jakąś zawartością i puste miejsce miedzy nimi czyli przezroczystość. I pociepło plik tak by każdy kwadrat stał się oddzielnym plikiem JPG lub PNG. Czyli

PLIK PNG
-------------------------------------------------

KWADRAT1
KWADRAT3

KWADRAT2
-------------------------------------------------

REZULTAT
PLIK JPG
KWADRAT1
PLIK JPG
KWADRAT2
PLIK JPG
KWADRAT3
nospor
znasz polozenie tych kwadratow na obrazku? Jak tak to raczej zwykle GD z php ci wystarczy
KotWButach
Problem własnie w tym że nie znam ich położenia tzn mogą się zmieniać, czasem jest ich mniej czasem więcej. Co więcej elementy są różnej wielkości.
trueblue
Te kwadraty w pliku PNG są jeden po drugim, czy może być również kilka w rzędzie?
KotWButach
Może być kilka w rzędzie sad.gif. Takie puzzle
trueblue
Zrobiłbym to tak:
- skanujesz obraz liniami poziomymi,
- jeśli natrafisz na nieprzezroczysty punkt, to zapisujesz (x1,y1),
- skanujesz dalej, jeśli natrafisz na przezroczysty lub koniec, to zapisujesz (x2),
- teraz lecisz od x2 w dół,
- jeśli trafisz na przezroczysty lub koniec, to zapisujesz (y2),
- w tym momencie masz jeden nieprzezroczysty obszar (x1,y1,x2,y2),
- zapisujesz ten wycinek i czyścisz fragment,
- teraz lecisz znów od punktu 0,0.

Nie jest to optymalny algorytm, ale uwalnia Cię od problemów kiedy skanując kolejne linie natrafisz na nieprzezroczyste obszary, które są fragmentami, które zaczęły się wyżej (np. na lewo jest niski obszar, a obok niego wysoki, więc skanując pod niskim trafisz na drugą połowę tego wysokiego).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.