[php][pomoc]Jak w procentach zmienić rozmiat obrazka? PHP

Tematy, które tyczą się webmasterstwa, a nie pasują do konkretnych działów.
Chmura
Przelotem
Przelotem
Posty: 220
Rejestracja: ndz gru 31, 2006 12:46 am
Lokalizacja: o stamtąd
Kontakt:

[php][pomoc]Jak w procentach zmienić rozmiat obrazka? PHP

Post autor: Chmura »

Witam

Szukam i szukam po naszym internetowym koledze google.pl i znaleźć nie mogę w końcu skusiłem napisać posta z pytaniem/prośbą

Czy jest możliwość(jeśli tak jaka) aby wyświetlany obrazek (gdy nie spełnia warunku był zmniejszony o połowę (50%)

np. Gdy chcemy aby każdy plik graficzny o rozmiarach mniejszych jak 800x600 był normalnie wyświetlany, ale już pliki większe jak 800x600 były zmniejszane o połowę. Sam zrobiłem następujący skrypt:

[php]<?php


$tab = getimagesize(scieżka/do/pliku.jpg);
if(($tab[0]<'1024')OR($tab[1]<'768')){
echo '<img src="'.$sc.'" />';
} else {
echo '<img src="'.$sc.'" width="1024" height="768" />';
}

?>[/php]

nie spełnia on moich wymagan ponieważ sprawdza tylko czy rozmiar pliku jest mniejszy jak 1024x768 jeśli tak pozostawia go bez zmian jeśli przekracza którąś z wartości zmniejsza go do rozmiarów 1024x768.
jest to nie fortunne rozwiązanie gdyż obrazki o nie standardowych rozmiarach deformuje. Pomyślałem sobie ze gdyby tak rozmiar pliku zmienić nie do ustalonych wartości ale o połowę mniej jak ich rzeczywisty rozmiar.
Pomysł mam ale z wykonaniem kompletnie mi nie idzie są może jakieś sugestie rozwiązania problemu. może już ktoś miał z tym kłopot i wie co z tym zrobić?

liczę na waszą pomoc

pozdrawiam
[/manual]
Ostatnio zmieniony ndz gru 31, 2006 7:23 pm przez Chmura, łącznie zmieniany 1 raz.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

Chcesz zmienic rozmiar na stałe czy tylko do wyswietlania? Powinienes robic to na PHP. Teraz ide na obiad wiec nie moge napisac przykladowego kodu :lol: ... ale bylo juz cos takiego na tym forum i podalem kod jak zmienic rozmiar obrazka. Tylko nie pamietam czy przypadkiem nie bylo to przed mala awaria i czy post nie polecial.
Chmura
Przelotem
Przelotem
Posty: 220
Rejestracja: ndz gru 31, 2006 12:46 am
Lokalizacja: o stamtąd
Kontakt:

Re: [php][pomoc]Jak w procentach zmienić rozmiat obrazka? PHP

Post autor: Chmura »

Chcesz zmienic rozmiar na stałe czy tylko do wyswietlania?
tylko do wyświetlania. To ma przypominać coś w stylu tego skryptu co dałem tylko ze jeśli nie spełnia warunku mniejszego lub równego jak 1024x768 zostaje pomniejszony o 50% (najlepiej z możliwością zmiany o ile %) ciekawie by było gdyby jeszcze dodatkowo np. standardowe rozdzielczości obrazów (np. 1280x768, 1280x1024, 1400x1050, 1680x1050) zmieniał do konkretnych rozmiarów np. 1024x768

pozdrawiam
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

przypominać coś w stylu tego skryptu co dałem tylko ze jeśli nie spełnia warunku mniejszego lub równego jak 1024x768 zostaje pomniejszony o 50% (najlepiej z możliwością zmiany o ile %)
Skoro chcesz to zrobic w tak nieoptymalny sposob (pobierasz grafike w wiekszym rozmiarze a wyswietlasz w miejszym - niepotrzebne pobieranie wiekszej ilosci danych i strata jakosci obrazu przez skalowanie w przegladarce) to wystarczy:
[php]<?php
$tab = getimagesize(scieżka/do/pliku.jpg);
$procent = 0.5; // procenty to przemnozenie przez ulamek (0.5 = 50%)

if(($tab[0]<'1024')OR($tab[1]<'768')){
echo '<img src="'.$sc.'" />';
} else {
$roz1 = (int) $tab[0] * $procent;
$roz2 = (int) $tab[1] * $procent;
echo '<img src="'.$sc.'" width="'.$roz1.'" height="'.$roz2.'"/>';
}
?>[/php]
To jest kiepskie rozwiazanie. Lepiej generowac obraz na php zeby niepotrzebnie nie sciagac tak duzych plikow a wyswietli i tak sie jako maly obrazek.
Chmura
Przelotem
Przelotem
Posty: 220
Rejestracja: ndz gru 31, 2006 12:46 am
Lokalizacja: o stamtąd
Kontakt:

Re: [php][pomoc]Jak w procentach zmienić rozmiat obrazka? PHP

Post autor: Chmura »

Wiem ze jest to nie zbyt dobre rozwiązanie...
ale chodzi o to ze chce wyświetlić obrazki już dodane na serwer, jest ich bardzo dużo powtórne skopiowanie na dysk, zrobienie skryptu pomniejszającego i jeszcze raz skopiować na serwer z moim internetem graniczy z cudem dlatego drogą wyboru postanowiłem w taki sposób zaleczyć ten problem

może jest jakieś lepsze rozwiązanie które ja nie wziąłem po uwagę albo nawet nie wiedziałem ze w taki sposób można załatwić sprawę?
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

już dodane na serwer, jest ich bardzo dużo powtórne skopiowanie na dysk, zrobienie skryptu pomniejszającego i jeszcze raz skopiować na serwer z moim internetem graniczy z cudem
A dlaczego masz sciagac to znowu? Nie łatwiej napisac skrypt ktory sam wszystko zrobi? Sprawdzi sobie rozmiar wszystkich obrazow i jesli jakis bedzie za duzy to go nadpisze z mniejsza rozdzielczoscia. W koncu to jezyki programowania sa dla programistow a nie my dla nich. Niech one odwalają cala robote :)
Chmura
Przelotem
Przelotem
Posty: 220
Rejestracja: ndz gru 31, 2006 12:46 am
Lokalizacja: o stamtąd
Kontakt:

Re: [php][pomoc]Jak w procentach zmienić rozmiat obrazka? PHP

Post autor: Chmura »

w trakcie roboty wynikł jeszcze jeden problem zeby wytłumaczyć musze podac skrypt galerii:

[php]<?php
if ($handle = opendir('galeria')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "<B><font size=2><a href=\"galeria.php?catname=galeria/$file\">$file</a></font></B><br />\n";
}
}
closedir($handle);
}

$ile = "4";
$n=1;
if ($handle = opendir($catname)) {
echo "<p align=center><b>Zdjęcia:</b><br /><br />";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{

if($file != "mini") {
$size = getimagesize($catname.'/'.$file);

if(($size[0]<'1024')OR($size[1]<'768')){

echo "<a rel=\"lightbox[example]\" title=\"$file\" href=\"$catname/$file\" class=\"image\"><img src=\"$catname/mini/$file\" hspace=3 vspace=3 ></a>";
}
else {

echo "<a title=\"$file\" href=\"$catname/$file\" class=\"image\"><img src=\"$catname/mini/$file\" hspace=3 vspace=3></a>";
}
if($n==$ile) { echo '<br>'; $n=0; }

$n++;
} else {
if($file == "opis.txt") { } else { echo "<br>"; }
}
}
}
closedir($handle);
}

?>[/php]

korzystam także ze skryptu LightBox2
(dzałanie myśle jest wam dobrze znane)

dotychczas skrypt ten wyszykuje folder "galeria" w nim foldery ze zdjęćmi(ich nazwy jako hiperłącza) otwierając wczytuje miniatury z folderu "mini" zawartego w folderze z zdjęćmi i automatycznie robi linki do oryginalnych zdjęć, gdy zastasowałem LightBox'a zdjęcia dużych rozmiarów otwierały sie w oryginalnych rozmiarach (oglądanie zdjęcie sprawia więcej kłopotu jak przyjemności gdyż trzeba sie strasznie namachać rolką " dlatego zastasowałem skrypt który zdjęcie o rozdzielczości mniejszej jak 1024x768 są otwierane za pomocą lightBox a większe standardowo otwierane. W jakiś sposób chce aby zdjęcie które są większe jak 1024x768 były przy wczytywaniu pomniejszane do danych rozmiarów co ułatwilo by przegladnie.

cała akcja rozgrywa sie nahttp://www.zstiojar.edu.pl/~bchmura/mec ... aleria.php

licze na waszą pomoc:)
ODPOWIEDZ