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] Tworzenie miniaturek, zmiana wielkości obrazów w php » 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: 22 | UU: 575

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

Strict Standards: Resource ID#251 used as offset, casting to integer (251) in /forum2/db/mysql4.php on line 224
[PHP] Tworzenie miniaturek, zmiana wielkości obrazów w php
Porady PHP | 5 maj 2008 | Wizyt: 103169

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 przedstawię w jaki sposób wykorzystać język php do manipulacji obrazem. Konkretnie zajmiemy się zmianą wielkości plików graficznych. Przedstawiona funkcja może zostać zastosowana w galeriach zdjęć do tworzenia miniaturek. Dodatkowo przedstawiony skrypt umożliwi dobór wielkości miniaturek do własnych wymagań.

Najpierw zastanówmy się jaki rozmiar ma mieć nasz docelowy obrazek. Istnieją dwa przypadki. Pierwszy, w którym orginalny obrazek jest większy od docelowego i drugi, w którym chcemy, aby obrazek docelowy był większy niż orginalny. Zmiejszanie obrazka nie stanowi problemu tak jak zwiększanie, którego efektem może być utrata jakości.

Użyjemy funkcję PHP korzystającą z biblioteki GD2. Jest to świetne rozwiązanie, jednak aby go użyć należy taką bibliotekę włączyć.

Aby włączyć możliwośc korzystania z biblioteki GD2 otwórz plik php.ini:
Aby uzyskać informację gdzie się ten plik znajduje możesz stworzyć mały skrypt informacyjny: <?php phpinfo(); ?>
Znajdź "extension_dir" i ustaw na właściwą wartość. Przykład: extension_dir = "d:\Program Files\Php\extensions\". Włącz bibliotekę GD2. Znajdź "extension=php_gd2.dll" i usuń semicolon(;) na początku linii. Sprawdź ustawienia za pomocą <?php phpinfo(); ?>. Powinieneś zauważyć sekcję GD Support" enabled.

Teraz zajmijmy się napisaniem odpowiedniego skryptu. Stórzmy funkcję o nazwie resizeImage(). Funkcja będzie posiadać 3 parametry: orginalny obrazek, docelowa szerokość, docelowa wysokość.

Kod: php

<?php
function resizeImage($orginalny_obrazek,$docelowa_szerokosc,$docelowa_wysokosc){
}
?> 

Aby wiedzieć do jakiego rozmiaru zmniejszyć obrazek musimy znać parametry orginalego obrazka. Możemy je pobrać za pomocą gotowej funkcji getimagesize(), która pobiera rozmiar obrazków w formatach GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM lub WBMP i zapisuje w tablicy.

Przykład:

Kod: php

<?php
    // Pobranie rozmiaru
    list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
    $xskala=$szerokosc/$docelowa_szerokosc;
    $yskala=$wysokosc/$docelowa_wysokosc;

?> 

Powyższy skrypt pozwoli nam skalkulować do jakiego rozmiaru chcemy doprowadzić nowy obraz. Przeanalizujmy dalszą część:

Kod: php

<?php
    // Kalkulacja nowego rozmiaru
    if ($yskala>$xskala){
        $nowa_szerokosc = round($szerokosc * (1/$yskala));
        $nowa_wysokosc = round($wysokosc * (1/$yskala));
    }
    else {
        $nowa_szerokosc = round($szerokosc * (1/$xskala));
        $nowa_wysokosc = round($wysokosc * (1/$xskala));
    }
?> 

Mamy teraz wszystkie potrzebne informacje, więc przejdźmy do sedna sprawy. Użyjemy 3 funkcji. Najpierw stwórzymy obraz o nowych rozmiarach używając funkcji imagecreatetruecolor(). Następnie stworzymy tymczsowy obraz. Zastosujemy w tym przypadku funkcję imagecreatefromjpeg(), która stworzy nowy obraz ze ścieżki do pliku. Na koniec najważniejsza sprawa. Tutaj użyjemy funkcji imagecopyresampled(), która skopiuje i zmieni rozmiar obrazu.

Kod: php

<?php
    // Zmiana rozmiaru orginalnego obrazu
    $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
    $obrazek_tymczasowy     = imagecreatefromjpeg ($orginalny_obrazek);
    imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $new_wysokosc, $szerokosc, $wysokosc);
?> 

Na koniec uzyskamy nowy obrazek. Konpletna funkcja zmiany rozmiaru wygląda tak:

Kod: php

<?php
function zmiana_rozmiaru($orginalny_obrazek,$docelowa_szerokosc,$docelowa_wysokosc){
   
    // Pobranie orginalnych parametrów i kalkulacja skali
    list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
    $xskala=$szerokosc/$docelowa_szerokosc;
    $yskala=$wysokosc/$docelowa_wysokosc;
   
    // Kalkulacja nowego rozmiaru
    if ($yskala>$xskala){
        $nowa_szerokosc = round($szerokosc * (1/$yskala));
        $nowa_wysokosc = round($wysokosc * (1/$yskala));
    }
    else {
        $nowa_szerokosc = round($szerokosc * (1/$xskala));
        $nowa_wysokosc = round($wysokosc * (1/$xskala));
    }

    // Zmiana rozmiaru orginalnego obrazu
    $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
    $obrazek_tymczasowy     = imagecreatefromjpeg ($orginalny_obrazek);
    imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);

    return $obraz_zmiana_wielkosci;
}
?>

nowe Porady PHP » zobacz wszystkie

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

Dodaj komentarz









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