![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 6 Dołączył: 17.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
W jaki sposób mogę sprawdzić wymiary (w pikselach) i rozmiar (w bajtach) obrazka stworzonego przez jedną z funkcji imagecreate. Próbowałem tak ale to nie działa
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 732 Pomógł: 80 Dołączył: 25.05.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował sniezny_wilk 23.12.2007, 23:08:27 -------------------- DevBlog - http://www.bartekrogus.pl
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 6 Dołączył: 17.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Problem w tym, że ta funkcja działa tylko na plikach, a nie na zasób obrazu z funkcji imagecreate*
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 732 Pomógł: 80 Dołączył: 25.05.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Zatem, czy nie może być tak:
EDIT: nie wiem czy to optymalne rozwiązanie, ale rozmiar w bajtach można pobierać tak:
Ten post edytował sniezny_wilk 23.12.2007, 23:15:23 -------------------- DevBlog - http://www.bartekrogus.pl
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 2 Dołączył: 22.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
sprobój tego
imagesx - szerokosc obrazka imagesy - wysokosc obrazka ... <?php $img = imagecreatetruecolor(300, 200); echo imagesx($img); // 300 ?> wielosc obrazka mozna sprawdzic po zapisaniu go do katalogu za pomoca np. imagepng i uzywajac standardowych opcji dla takich operacji dla plikow ... mam nadzieje ze pomoglem ... ![]() powodzenia g. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 6 Dołączył: 17.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zatem, czy nie może być tak:
Też tak robiłem ale jeżeli sprawdzałem getimagesize ten obrazek a potem wczytawałem go funkcją imagecreatefromstring to obrazek pobierał się 2 razy więc to rozwiązanie odpada. sprobój tego imagesx - szerokosc obrazka imagesy - wysokosc obrazka ... <?php $img = imagecreatetruecolor(300, 200); echo imagesx($img); // 300 ?> wielosc obrazka mozna sprawdzic po zapisaniu go do katalogu za pomoca np. imagepng i uzywajac standardowych opcji dla takich operacji dla plikow ... mam nadzieje ze pomoglem ... ![]() powodzenia g. Problem wymiarów rozwiązany. Pozostaje problem rozmiaru (w bajtach). Zapis na dysk będzie bardzo spowalniał działanie skryptu. Czy jest możliwość sprawdzenia tych danych jakąś konkretną funkcją bez takich sztuczek? Ten post edytował Force 24.12.2007, 18:00:03 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 2 Dołączył: 22.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
wrzucenie pliku na dysk to nic strasznego ... zasadniczo ten plik i tak masz w pamieci do momentu gdy nie wyrzucisz go do przegladarki za pomoca imagepng($twojobrazek) lub podobnej funkcji dla innego pliku graficznego, pamiec ta zwracasz do systemu uzywajac imagedestroy($twojobrazek) ... robiac cos nieco innego a mianowicie uzywajac imagepng($twojobrazek,'twojObrazek.png') zapisujsz go(obrazek) sobie na dysku, sprawdzasz jego wielkosc za filesize a potem mozesz automatycznie pozegnac sie z nim za pomoca unlink wyswietlajac ten obrazek na stronie liijke wczesniej ... pamiec uzyta do zapisu obrazka zostaje niemal natychmiast zwolniona a ty masz wielkosc tego obrazka i mozesz sie do niego odniesc nie tylko wyswietlajac go do przegladarki
le poprzez link jak do zwyklego pliku graficznego ... jak masz jakies dane na podstawie ktorych robiony jest ten obrazek to zawsze mozesz go sobie potem nadpisac albo usunac i stworzyc nowy w tym samym miejscu i znow miec mozliwosc wziecia jego wielkosci za pomoca filesize ... normalne zasady zapisu pliku na serwerze stosuja sie takze przy plikach graficznych (eg.uprawinienia); pozdrawiam g. Ten post edytował glorification 24.12.2007, 19:28:19 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 732 Pomógł: 80 Dołączył: 25.05.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Jedynym minusem jest niepotrzebnie "rzeźbienie" po transferze, jednak jeśli masz duży limit to dobre rozwiązanie.
-------------------- DevBlog - http://www.bartekrogus.pl
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 1.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pozostaje problem rozmiaru (w bajtach). Zapis na dysk będzie bardzo spowalniał działanie skryptu. Czy jest możliwość sprawdzenia tych danych jakąś konkretną funkcją bez takich sztuczek? Witam, mam podobny problem. generuję obrazek za pomocą imagecreate, imagejpg problem moj jest taki, że muszę przesłać informację o wielkości pliku w headerze. (pobieram we flashu obrazek, który widzi wielkość pliku (plik zwrócony przez php) jako wartość 0; gdy prześlę w headerze content-length=99999 to flash widzi, że obrazek ma 99999 Bajtów, co jest logiczne) gdy zastosowuję sztuczkę z kładzeniem pliku na dysk, następuje niemożliwość przesłania nagłówka Content-Length mój log: Cytat [05-Nov-2009 00:35:11] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/xio46160/public_html/zaprojektujemy/borovsky/neo/resampleImage.php:81) in /home/xio46160/public_html/zaprojektujemy/borovsky/neo/resampleImage.php on line 85 a "output started" to linijka, gdzie robię imagejpeg(obrazek, ścieżka) czyli te rozwiązanie się wyklucza, bo nie mogę nic "wypluć" zanim nie prześlę nagłówka... teraz tak: jeśli normalne rozwiązanie to jest niemożliwe, to pytam, czy może być jakiś inny powód, dla którego flash widzi wielkość obrazka dynamicznie generowanego przez php jako liczbę 0? a może jest jakaś biblioteka graficzna php która obsługuje podawanie rozmiaru pliku jpg, który ma być "wypluty" Bardzo proszę o pomoc! Pozdrawiam, Adam edit// juz wiem, wystarczy ob_start(); oraz ob_end_flush(); Ten post edytował borovsky 5.11.2009, 01:26:59 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 19:46 |