![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 6 Dołączył: 14.02.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam
napisałem taki kod do uploadu obrazków:
i mam problem otóż jak obraz jest większy niż 600px x 600px to zmniejsza go i dobrze wgrywa, natomiast jak obraz jest mniejszy od 600px x 600px to zamiast wgrac go dobrze tzn stworzyc od nowa jak 1 bok 1 za duzy to zmniejszyc troche i wrzucic to zmniejsza go całkowicie nieraz nawet do 100x100px pomimo iz obraz ma 400x400px ? gdzie zrobiłem błąd ?
Powód edycji: Dodałem tag. /webdice
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Powiem tylko tyle, że kod masz mocno nieoptymalny.
Powinno to wyglądać tak: 1. Sprawdzasz format (ta część poprawnie), 2. Sprawdzasz rozmiar (tu bym się kłócił czy poprawnie), 3. Jeśli większy niż wymagane to oblicz stopień skalowania dla każdego z boków. Ten który ma mniejszy - dla niego ustaw 600, temu z większym oblicz nowy rozmiar obliczając wcześniej ratio pomiędzy bokami oryginalnego by zachować proporcje boków. 4. Jeśli jest mniejszy... Po prostu skopiuj obraz przysłany do katalogu docelowego. 5. A teraz zrób sobie miniaturkę (IMG:style_emoticons/default/winksmiley.jpg) I jeszcze jedno... Czy masz mieć maksymalny rozmiar jednego z nich większy od 600 czy wystarczy że jeden z nich przekroczy 600? bo od tego zależy czy masz w sprawdzaniu warunków AND czy OR. A to jest poważna różnica, bo obraz 5000x400 nie będzie skalowany gdy masz AND, zaś w przypadku OR jak najbardziej zostanie potraktowany zmniejszaniem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 6 Dołączył: 14.02.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
dobra już działa a co do
5. zrób sobie miniaturke to ten kod juz robi miniaturkę. Błąd był w tym że miałem w 1 imagesx i imagesy zamienione x z y (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Dlaczego tak? Bo jest mniej bajzlu w kodzie, widać co się dzieje. Mogłem wrzucić konwersje głównego obrazka do osobnego i w razie gdyby oba wymiary były mniejsze niż 600 oraz byłby to jpg po prostu skopiować źródłowy bezpośrednio gdzie indziej, bo nawet konwersji bym robić nie musiał. A wpisywanie 99 w imagejpg jest głupotą, bo tworzy ogromne pliki. Na potrzeby www z reguły wystarcza 70-75 a dla miniatur maksimum to 60-65. Kod skracałes sobie wywołując co chwilę imagesx i imagesy, a przypisanie do zmiennych skraca czas dostępu niż notoryczne ich używanie (IMG:style_emoticons/default/winksmiley.jpg) Kod jest zupełnie niezabezpieczony przeciwko takim "atakom" jak obrazki 5000x1 czy 1x5000 bo warunek skalowania wtedy nie ruszy (IMG:style_emoticons/default/smile.gif) A layout strony Ci się rozjedzie całkiem. Nie jest tez zabezpieczony przeciwko innym typom plików bo nawet nie sprawdzasz, czy to co dostałeś w ogóle jest plikiem obrazu. Kompletnie więc zaniedbałeś bezpieczeństwo skryptu i wystawiłeś się na atak. Ja i tak zanim swój skrypt bym puścił to sprawdziłbym co mi właściwie ludzie do zmiennej $_FILES wrzucili. Bo jeśli jakiś skrypt... to mógłbyś mieć nieprzyjemną sytuację. Ten post edytował thek 1.09.2009, 04:18:06 |
|
|
![]()
Post
#5
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Przenoszę do działu Przedszkole.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 22:57 |