Temat: [php] wyświetlanie zdjęć

Mam na stronie pole o wymiarach 500x300. Chcę w nim wyświetlać zdjęcia z galerii, które są uploadowane na serwer przez formularz.
Jak zrobić żeby zdjęcia się poprawnie wyświetlały tzn. nie wystarczy w kodzie ustawić tylko width i height ponieważ jak zdjęcie ma 1000x300 to tylko jeden wymiar zostanie zmieniony i zdjęcie nie będzie dobrze wyglądało. Chodzi o dostosowanie wymiarów wgrywanego zdjecia

Dokładną zasadę o co mi chodzi można zobaczyć tutaj http://poltroter.pl/galeria.php

konto usunięte

Temat: [php] wyświetlanie zdjęć

google.pl -> class.upload.php

konto usunięte

Temat: [php] wyświetlanie zdjęć

Powinieneś zainteresować się biblioteką GD do PHP. Tam będziesz mógł przetworzyć zdjęcie do wskazanych rozmiarów.
Marcin Wrzyciel

Marcin Wrzyciel Lead Technical
Developer, Fortune
Cookie Poland

Temat: [php] wyświetlanie zdjęć

Jasne że możesz to robić w GD, ale jak nie chcesz się męczyć (z wypowiedzi wnioskuje ze jesteś raczej początkujący) sugeruję skorzystać z jakieś ogólnodostępnej biblioteki, np. phpThumb (licencja GPL) więc raczej do zastosowań niekomercyjnych, czy klasą Thumbnail z PEARa (licencja trochę łaskawsza dla projektów komercyjnych, jednak mniej możliwości), z obu tych rozwiązań korzysta się w miarę prosto.

konto usunięte

Temat: [php] wyświetlanie zdjęć

a ja również tak jak Krystian Polecam php.class.upload

http://www.verot.net/php_class_upload_samples.htm

konto usunięte

Temat: [php] wyświetlanie zdjęć

function scaleandcrop($image, $width, $height, $dest)
{
$other=0;
$ext=strtolower(substr($image, -4));
switch($ext)
{
case ".jpg": case "jpeg":
$img = imagecreatefromjpeg($image);
break;
case ".gif":
$img = imagecreatefromgif($image);
break;
case ".png":
$img = imagecreatefrompng($image);
break;
default:
$other=1;
break;
}
if(!$other)
{
$w = imagesx($img);
$h = imagesy($img);
$top=0;
$left=0;
if(($width/$height)>($w/$h))
{
$nw=$width;
$nh=ceil($nw*($h/$w));
}
else
{
$nh=$height;
$nw=ceil($nh*($w/$h));
} if($nh>$height)
{
$top=ceil(($nh-$height)/2)*-1;
}
else
{
$left=ceil(($nw-$width)/2)*-1;
}
$img_mini = imagecreatetruecolor($width, $height);
imagecopyresampled($img_mini, $img, $left, $top, 0, 0, $nw , $nh, $w ,$h);
imagejpeg($img_mini, $dest, 80);
}
}
scaleandcrop('zima.jpg', 100, 600, 'zimam.jpg');

sprawdź to, parametry funkcji: obrazek wejściowy, szerokosc, wysokość, obrazek wyjściowy

Wrzucasz zdjęcie na serwer => tworzysz miniaturkę o tej samej nazwie np w folderze miniaturki, w php wyświetlasz miniaturki a nie pełne obrazy

Skrypt przycina obrazy dzięki czemu przy wysokich lub szerokich obrazach nie są one "zmiażdżone" jest widoczny ich środkowy obszarSebastian Poddubiuk edytował(a) ten post dnia 15.08.09 o godzinie 14:48

Temat: [php] wyświetlanie zdjęć

ok dzieki za pomoc, problem rozwiązany
Marcin Witek

Marcin Witek isido.pl ułatwia
pracę - polski sytem
zarządzania
projekt...

Temat: [php] wyświetlanie zdjęć

można też ominąć cropowanie w php i tylko skalować proporcjonalnie, a potem przy pokazywaniu zamknąć obrazek w <div> o zadanych wymiarach z ustawionym overflow:hidden i ewentualnie ujemnymi marginesami dla centrowania. Plus takiego rozwiązania jest taki, że miniatury zawierają pełne obrazki i jest potem możliwość manipulacji wycropowanym obszarem (poprzez sterowanie marginesami obrazka).
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: [php] wyświetlanie zdjęć

A strona z miniaturkami wczytuje się tydzień...

konto usunięte

Temat: [php] wyświetlanie zdjęć

Marcin Wrzyciel:
Jasne że możesz to robić w GD, ale jak nie chcesz się męczyć (z wypowiedzi wnioskuje ze jesteś raczej początkujący)

się pomęczy, się nauczy ;)
GD i proporcja.
Marcin Witek

Marcin Witek isido.pl ułatwia
pracę - polski sytem
zarządzania
projekt...

Temat: [php] wyświetlanie zdjęć

Jakub Korupczyński:
A strona z miniaturkami wczytuje się tydzień...

chodziło mi o skalowanie w php przy uploadzie, nie w htmlu ;) Więc wczyta się tak samo praktycznie (pomijam różnice w czasie renderowania strony bo testów nie robiłem, a na oko różnicy nie ma - tyle że na oko to chłop w szpitalu umarł ;) ).

Wtedy zostaje plus, o którym pisałem ;)
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: [php] wyświetlanie zdjęć

a nie prościej trzymać obrazki w normalnej jakości na serwerze i robić docelowe miniaturki i obrazki "w locie" ?

http://www.adrianzdziechowicz.pl/view,photo,2,58.html#pic

ten obrazek np ma 1000x664 pix a przy użyciu GD wyświetla się bardzo ładnie

jedyny minus środkowania w GD jest taki , że jeśli miniaturki są takie same bez względu na orientację zdjęcia np. kwadracik , to przy pionowej fotce można komuś przyciąć głowę ;)
Marcin Witek

Marcin Witek isido.pl ułatwia
pracę - polski sytem
zarządzania
projekt...

Temat: [php] wyświetlanie zdjęć

Adrian Zdziechowicz:
a nie prościej trzymać obrazki w normalnej jakości na serwerze i robić docelowe miniaturki i obrazki "w locie" ?

http://www.adrianzdziechowicz.pl/view,photo,2,58.html#pic

ten obrazek np ma 1000x664 pix a przy użyciu GD wyświetla się bardzo ładnie

jedyny minus środkowania w GD jest taki , że jeśli miniaturki są takie same bez względu na orientację zdjęcia np. kwadracik , to przy pionowej fotce można komuś przyciąć głowę ;)

zależy ile tych obrazków będzie, ale to prosta droga do zarżnięcia każdego serwera...
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: [php] wyświetlanie zdjęć

Marcin Witek:
Adrian Zdziechowicz:
a nie prościej trzymać obrazki w normalnej jakości na serwerze i robić docelowe miniaturki i obrazki "w locie" ?

http://www.adrianzdziechowicz.pl/view,photo,2,58.html#pic

ten obrazek np ma 1000x664 pix a przy użyciu GD wyświetla się bardzo ładnie

jedyny minus środkowania w GD jest taki , że jeśli miniaturki są takie same bez względu na orientację zdjęcia np. kwadracik , to przy pionowej fotce można komuś przyciąć głowę ;)

zależy ile tych obrazków będzie, ale to prosta droga do zarżnięcia każdego serwera...
wprowadziłem całkiem skutecznie to rozwiązanie w serwisie zawierającym aktualnie kilkadziesiąt tysięcy fotek (sklep foto) i jakoś serwer żyje :)



Wyślij zaproszenie do