Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Otwierajace sie okno, o wielkosci obrazka w nim zawartego?
Forum PHP.pl > Forum > Gotowe rozwiązania
kpjeziorak
Mam do Was pytanie:
Czy istnieje mozliwosc w php, napisania skryptu, ktory po kliknieciu na link/obraz_miniature, otworzy mi okno (bez paskow narzedzi itp./same ramki), o wielkosci np. jakiegos obrazka, ktory ma sie wyswietlic w oknie? Tylko zalezy mi na tym, by skrypt sam sprawdzil jaki duzy jest obrazek i otworzyl odpowiednie okno, nie chce recznie edytowac wielkosci okna w linku.
czachor
[php:1:9991026bbb]<?
$file="plik.jpg";
$a = getimagesize($file);
echo "szer: $a[0], wys: $a[1]";
?>[/php:1:9991026bbb]
pisałem od ręki, ale powinno działać
więcej: getimagesize
kpjeziorak
Hm, no dziala biggrin.gif , ale zupelnie nie o to mi chodzi, skrypt, ktory mi napisales pokazuje wielkosc obrazka, a ja potrzebuje skrypt, ktory bedzie mi otwieral okno, o wielkosci danego obrazka, no i oczywiscie w oknie bedzie ten onrazek. Czy istnieje cos takiego? Po za tym nie chce recznie definiowac wielkosci obrazkow, bo mam bardzo duzo obrazkow do wyswietlenia, a mi zalezy na czasie:)
Sh4dow
proponuje dodac jakies 20px do kazdej wielkosci otrzymanej z getimagesize i otworzenie nowego okienka ale juz poprzez JavaScript przyklad
[php:1:9a3df96703]<?php
$size = GetImageSize ($tutaj_sciazka_obrazka);
$width = $size[0]+10;
$height = $size[1]+10;
echo "<a href="java script: OnClick="window.open('".$tutaj_sciazka_obrazka."','img', 'width=".$width.", height=".$height.", menubar=no, scrolling=yes, fullscreen=0');">
<img src="".$tutaj_sciazka_obrazka."" border="0"></a>";
?>[/php:1:9a3df96703]
To jest oczywiscie prosty przyklad, ktory mozna modyfikowac na wiele sposobów, zycze powodzenia biggrin.gif
kpjeziorak
sad.gif Cos mi nie wychodzi, np. jak mialby wygladac skrypt dla obrazka 03_wikielec.jpg - duzy obrazek, zas miniaturka na ktora klikam to 03_wikielec_small.jpg? Prosze o pomoc, bo jestem zielony w php:(
Bakus
[php:1:2f166b667b]<?php
function pokaz_obrazek($maly, $duzy)
{
$size = GetImageSize ($duzy);
$width = $size[0]+10;
$height = $size[1]+10;
print '<a href="#" OnClick="window.open(';
print "'" . $duzy . "', 'img, '";
print "width=" . $width . ," height=" . $height;
print ", menubar=no, scrolling=yes');">";
print '<img src="' . $maly . '" border="0"></a>';
}


// dla podanych obrazków zastosuj:
pokaz_obrazek("03_wikielec_small.jpg", "03_wikielec.jpg");
?>[/php:1:2f166b667b]
czachor
heeeh.. edytowałem później posta i wyciąłem to co powinno jeszcze być rolleyes.gif co prawda masz już rozwiązania podane, ale chodziło mi to:
[php:1:5ce01cc0c1]<?
$file="plik.jpg"; // duży obrazek
$a = getimagesize($file);
?>
<A HREF="java script:displayWindow('<?= $file ?>',<? echo "$a[0],$a[1]" ?>)"><img src="miniaturka.jpg"></a>[/php:1:5ce01cc0c1]
nazwy plików możesz zczytywać np. z tablicy
kpjeziorak
Niestety, zaden z przykladow, ktore mi podaliscie nie dziala sad.gif , chcialbym skupic sie na ostatnim przykladzie, ktory napisal "Czachor". Prawie wszystki jest ok, poprawnie pokazuje w linku wielkosc obrazka, tzn. okna, ktore ma sie otworzyc, miniatura takze sie wyswietla, jednak gdy klikam na miniature, wyskakuje blad JavaScript,:
Wiersz: 1
Znak: 1
Błąd: Oczekiwano obiektu
Kod: 0

Plik, w ktorym umiescilem skrypt ma rozszerzenie .php, po za przykladem czachora nic wiecej tam nie ma, zadnych innych kodow HTML`a czy innych, zmienilem tylko nazwy plikow, wiec co moze byc nie tak?
czachor
oki mój błąd sad.gif mam jakiś zły dzień...
na początku dokumentu wstaw oczywiście funkcję displayWindow:
Kod
<script language="JavaScript" type="text/javascript">

function displayWindow(url, width, height) {

        var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=0,scrollbars=no,menubar=no' );

};

</script>

niektóre przeglądarki czasami wstawiały auomatycznie margines do tego okienka, więc całość trochę się psuła... jeżeli będziesz miał też ten problem, daj znać, zapodam rozwiązanie
Sh4dow
[php:1:288fc40997]<script>
function img(img, width, height)
{
window.open(''+ img +'', 'img' , 'width=' + width + ', height=' + height + ', menubar=no, scrolling=yes, fullscreen=0');
}
</script>
...
<?php
$size = GetImageSize ($tutaj_sciazka_obrazka);
$width = $size[0]+10;
$height = $size[1]+10;
echo "<a href="java script: img(' ".$tutaj_sciazka_obrazka." ' ". $width ." ', ' ".$height." ');"><img src="".$tutaj_sciazka_mini obrazka."" border="0"></a>";
?>[/php:1:288fc40997]
skrypt w javie obsluguje otwarcie okienka o konkretnych rozmiarach, z obrazkiem lub jakims innym plikiem podanym w pierwszym parametrze. Musisz podac rowniez sciezke do pliku, wzgledna lub od glownego katalogu to jest obojetne. Wywołujesz funkcje tak jak w linku. Nie wiem jak ty to przepisujesz skoro nie dziala, ja podalem ci przyklad dzialajacy u mnie. Jak nie bedzie dzialac to podaj swoj kod z wklejonym skryptem. moze masz gdzies blad.
kpjeziorak
Do "Czachora": Teraz wszystko dziala, tylko prosilbym wlasnie o to rozwiazanie z marginesami, bo naprawde nie wyglada ciekawie w tej chwili biggrin.gif

Do "Sh4dow": w miejsce $tutaj_sciazka_obrazka wstawiam nazwe obrazka z rozszerzeniem, gdyz znajduje sie w tym samym miejscu co skrypt, no i nie dziala, probuje tez do tego: $tutaj_sciazka_obrazka przypozadkowac [php:1:5c08582050]<?php
$tutaj_sciazka_obrazka = "obraze.jpg";
?>[/php:1:5c08582050]
i tez nie dziala, nie wiem czemu, jako powinien poprawnie wygladac, skrypt dla obrazka obrazek.jpg i miniatury obrazek_small.jpg?
czachor
oki, więc z tymi marginesami...
Nie jest to chyba najbardziej ekonomiczna metoda, ale nie próbowałem robić lepszej (może ktoś ma myśl, jak to ulepszyć?).
Link w zapodanym wyżej kodzie zmieniłem na:
Kod
<A HREF="javascript:displayWindow('pokaz.php',<? echo "$a[0],$a[1]" ?>)"><img src="miniaturka.jpg"></a>

teraz zawartość pokaz.php:
Kod
<html>

<head>

<title>obrazek</title>

</head>

<body style="margin: 0px">

<img src="plik.jpg">

</body>

</html>

Kliknięcie na małym obrazku otwiera okienko z plikiem pokaz.php, który ma zdefiniowane zerowe marginesy
i tylko wyświetla właściwy obrazek (plik.jpg).
Jeżeli masz więcej obrazków, do linka dostaw jakiś parametr, a w pliku pokaz.php wyświetlaj zależny od parametru obrazek.
kpjeziorak
No tak dziala, ale do kazdego oddzielnego obrazka musze tworzyc kolejny plik pokaz.php, dalej pokaz2.php itd. na szczescie udalo mi sie rozwiazac ten problem inaczej: w linku definiuje dla szerokosci i dlugosci okna dodatkowo +25px i wyswietla mi okno calkiem przyzwoicie, tak wiec dzieki Ci Czachor za rozwiazanie mojego problemu i tekze dziekuje reszcie, ktora probowala mi pomoc, wasze przyklady pewnie sa poprawne, tylko ja cos mieszam biggrin.gif no coz cienki jestem w te klocki, ale dzieki temu forum duzo sie ucze... PS: Napiszcie jak znacie jakies inne rozwiazania, moze w przyszlosci komus sie przydadza, pozdrawiam...
czachor
nie musisz tworzyć za każdym razem nowego pliku
ja wyswietlam linki tak..
mam ileś plików np. image1.jpg, image2.jpg.....
wtedy modyfikujesz link do okienka :
np. do image1.jpg:
Kod
....pokaz.php?id=1...    (id to kolejny nr obrazka)
do image2.jpg:
Kod
....pokaz.php?id=2.....

i wtedy pokaz.php:[php:1:5e59b821ab]tutaj nagłówki
<img src="image<?= $id ?>.jpg">[/php:1:5e59b821ab] i wtedy Ci wyświetla konketny obrazek
kpjeziorak
hmm? Fajne rozwiazanie smile.gif , mysle ze sie przyda, nie wiedzialem - a co ja wogole wiem tongue.gif - ze jest taka mozliwosc, dzieki za pomoc..
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-2024 Invision Power Services, Inc.