Strict Standards: Redefining already defined constructor for class wpdb in /blog/wp-includes/wp-db.php on line 49

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/cache.php on line 35

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /blog/wp-includes/cache.php on line 400

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 553

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 674

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/query.php on line 15

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/theme.php on line 505

Strict Standards: Non-static method Advanced_Permalinks::get() should not be called statically in /blog/wp-content/plugins/advanced-permalinks/advanced-permalinks.php on line 825

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /blog/wp-includes/plugin.php on line 123

Warning: call_user_func_array() expects parameter 2 to be array, null given in /blog/wp-includes/plugin.php on line 123
[PHP] Jak za pomocą funkcji wyświetlać orginalne zdjęcie w różnych rozmiarach? » Porady PHP » egrafik.pl
BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 19 | UU: 270

Strict Standards: Resource ID#250 used as offset, casting to integer (250) in /forum2/db/mysql4.php on line 223

Strict Standards: Resource ID#250 used as offset, casting to integer (250) in /forum2/db/mysql4.php on line 224
[PHP] Jak za pomocą funkcji wyświetlać orginalne zdjęcie w różnych rozmiarach?
Porady PHP | 16 luty 2009 | Wizyt: 105932

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Deprecated: Function eregi() is deprecated in /blog/wp-content/plugins/tpbc.php on line 96

W tej poradzie przedstawiony zostanie sposób na łatwe zaprogramowanie funkcji, dzięki której mając jeden źródłowy obraz będzie można go wyświetlać w różnych miejscach, w różnych rozmiarach, w zależności od konkretnych potrzeb.

Przykładowo mamy kilka tysięcy zdjęć produktów w sklepie. Aby ciekawie przedstawić naszą ofertę, tworzymy różnego rodzaju listy z zajawkami i miniaturami, galerie, listy wyszukiwanych produktów, pokazy, w których używamy zdjęć produktów. Niekiedy chcemy pokazać listę z malutkimi zdjęciami, czasem pokaz zmieniających się zdjęć w średnim rozmiarze, najczęściej przy zachowaniu zasady, że wyświetlane zdjęcia mają tę samą maksymalną szerokość lub wysokość.

Jednym ze sposobów, jest trzymanie na serwerze kilku wersji rozmiarowych tego samego zdjęcia. Można też, co zaproponuję w tej poradzie, skorzystać z funkcji, która będzie dostarczała danego zdjęcie w takim rozmiarze, jaki nas interesuje.

Przykład:

Kod: php

<?php

function zdjecieRozmiar($szerokosc, $wysokosc, $cel) {

//funkcja z trzema argumentami (orginalna szerokosc, orginalna wysokosc, rozmiar doceolowy)

if ($szerokosc > $wysokosc) {
$procent = ($cel / $szerokosc);
} else {
$procent = ($cel / $wysokosc);
}

// zaokraglenie wartosci szerokosc i wysokosc
$szerokosc = round($szerokosc * $procent);
$wysokosc = round($wysokosc * $procent);

//zwrócenie kawalka kodu html z nowymi rozmiarami zdjecia

echo "width=\"$szerokosc\" height=\"$wysokosc\"";

}

?>

W powyższym przykładzie funkcja pobiera 3 argumenty. Pierwsze 2 to szerokość i wysokość orginalnego zdjęcia, które będą podstawiane w sposób opisany w dalszej części. Trzecia to docelowa szerokość lub wysokość, w zależności od tego czy orginalne zdjęcie to zdjęcie typu krajobraz (szerokość > wysokość) lub portret (szerkość < wysokość).

Po pobraniu powyższych argumentów, funkcja sprawdza ile procent orginalnego rozmiaru stanowi rozmiar docelowy. Wartość ta jest następnie wykorzystana do ustalenia nowej szerokości i wysokości zdjęcia, które dodatkowo po są zaokrąglane (wynik mnożenia nie zawsze będzie liczbą całkowitą). Trzeba zwrócić uwagę na to, że do obliczania zmiennej $procent używany jest dłuższy bok, gdyż to właśnie dłuższy bok jako pierwszy osiągnie rozmiar określony zmienną $cel.

Zanim użyjemy naszej funkcji musimy pobrać szerokość i wysokość orginalną zdjęcia, który chcemy wyświetlić. Służy do tego funkcja PHP getimagesize(). Funkcja zwraca tablicę z wartościami kolejno: szerokość, wysokość, typ.

Kod: php

$mojezdjecie = getimagesize("zdjecia/zdj1.jpg");

W tym momencie zmienna $mojezdjecie

staje się tablicą, która zawiera podstawowe informacje o zdjęciu zdj1.jpg. Indeks 0 zawiera szerokość ($mojezdjecie[0]), indeks 1 - wysokość ($mojezdjecie[1]).

Test działania funkcji:

Załóżmy, że chcemy wyświetlić listę ładnych zdjęć w kolumnie, a ich szerokość lub wysokość nie może przekraczać 150 pikseli.

Kod: php

<?php
/* pobranie wielkosci obrazu do tablicy moje zdjecie */
$mojezdjecie = getimagesize("zdjecia/zdj1.jpg");

?>
/* uzycie funkcji w kodzie html –>

<img src="zdjecia/zdj1.jpg" <?php zdjecieRozmiar($mojezdjecie[0], $mojezdjecie[1], 150); ?>>

W ten sposób wyświetlono za pomocą funkcji zdjecieRozmiar() - obraz o zaplanowanym rozmiarze. Teraz nasze zdjęcie nie będzie szersze lub wyższe niż zaplanowane 150 pikseli.

Zaletą używania takiej funkcji, jest to, że nie musimy utrzymywać na serwerze jednego zdjęcia w kilku rozmiarach. Wadą może być to, że funkcja zmienia jedynie zapis html narzucając zdjęciu w jakich rozmiarach ma się wyświetlać, nie zmienia natiomiast jego orginalnej wagi jaką zajmuje na dysku.

Warto zatem używać tej techniki na stronach, na których liczba jednocześnie wyświetlanych zdjęć nie jest zbyt duża.

Autor: Adam Suchowski

nowe Porady PHP » zobacz wszystkie

WordPress database error: [Incorrect file format 'wp_comments']
SELECT * FROM wp_comments WHERE comment_post_ID = '1390' AND comment_approved = '1' ORDER BY comment_date desc

Dodaj komentarz









 
| | | |
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker