LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Effective Thumbnails

Edituj záznam
Kategorie: PHP
Programovací jazyk: PHP
Domovská stránka: http://www.stud.fit.vutbr.cz/~xhorak50/blog/effective-thumbnails-php-utility/
Download: http://www.stud.fit.vutbr.cz/~xhorak50/blog/effective-thumbnails-php-utility/
Tvůrce: Jan Horák
Popis skriptu: Utilitka pro automatické generování náhledů pomocí PHP4+. Místo adresy obrázku (např. images/test.gif) se do HTML tagu zadá thumb.php?src=images/test.gif&w=100&h=50&ne=1 Skript z obrázku a jeho rozměrů vygeneruje náhled (šířka 100px, výška 50px), který uloží do speciální složky s náhledy (defaultně .thumbs/). Tento náhled potom prohlížeči odešle jako obyčejný obrázek. Při dalším zavolání skriptu se stejnými parametry skript znovu náhled nevytváří, ale odešle mu náhled, který je již vytvořený. Tím se ušetří nemálo času a prostředků serveru.
Nároky na klienta: Standardní HTML prohlížeč.
Nároky na server: PHP4+
Kód s komentáři:
<?php

////////////////////////////////////////////////////////////////////////
//
//  Name: Effective thumbnails 1.0
//
//  Description: 
//      This makes a thumbnail with dimensions specified in the GET request 
//        from the original image and send to browser with correct MIME type. 
//        It keep original aspect ratio and supports alpha channel in GIF 
//      and PNG images.
//
//      New image with new dimensions stored in a special thumbnail directory 
//      for the future use without a necessity of generating a thumbnail again 
//      (this saves much server time).
//    
//      Support: JPEG, GIF, PNG, BMP
//
//  Using: 
//      The folowing HTML tag calls this script to generate a thumbnail 
//      of the image images/test.gif with width 100px and height 50px.
//      Image will not be enlarge if original size is smaller (ne=1).
//      <img src="thumb.php?src=images/test.gif&w=100&h=50&ne=1" alt="" />
// 
//  Author: Jan Horak, horak.jan AT centrum.cz
//  Date: Auhust, 14th, 2007 
//
//  Licence: GPL (using, distributing, modifying for FREE)
//
////////////////////////////////////////////////////////////////////////

    // default thumbnails directory
    
$thumb_dir_name '.thumb/';

    
// file, which should be made a thumbnail from
    
$file $_GET['src'];
    
    if (!isset(
$_GET['src']) || strlen($_GET['src']) <= 
            
|| !is_file($file) || !is_readable($file)) {
        exit;
    }

    
// get dimensions of the thumbnail 
    // (if not specified, original dimensions will be used)
    
list($w$h) = getimagesize($file);
    
$w = ($_GET['w']) ? $_GET['w'] : $w;
    
$h = ($_GET['h']) ? $_GET['h'] : $h;
        
    
// image location separated into directory and file
    
$dir_exp explode('/'$file);
    
$file_name array_pop($dir_exp);
    
$dir_name implode('/'$dir_exp).'/';

    
// finding the original image's directory
    
if (!is_dir($dir_name)) {
        exit;
    }

    
// make the thumbnail directory in doesn't exist yet
    
if (!is_dir($dir_name.$thumb_dir_name)) {
        if (!
mkdir($dir_name.$thumb_dir_name)) { 
            echo 
"adresar $thumb_dir_name nevytvoren<br />";
            exit;
        }
    }

    
// make a hash from name of the original file and dimensions
    
$hash_base $file.$w.$h;
    
$hash md5($hash_base);
    
$thumb_file_name $dir_name.$thumb_dir_name.$hash;

    
// generating a new thumbnail if needed
    
if (!file_exists($thumb_file_name)) {
    
        
// get type of image
        
$type exif_imagetype($file);

        
// make the thumbnail if doesn't exists
        
switch ($type) {
            case 
IMAGETYPE_GIF$image imagecreatefromgif($file); break;
            case 
IMAGETYPE_JPEG$image imagecreatefromjpeg($file); break;
            case 
IMAGETYPE_PNG$image imagecreatefrompng($file); break;
            case 
IMAGETYPE_BMP$image imagecreatefromwbmp($file); break;
             default: exit; break;
        }
        
$width imagesx($image);
        
$height imagesy($image);

        
// count the resize ratio
        
$ratiox = (float)$w / (float)$width;
        
$ratioy = (float)$h / (float)$height;
        
$ratio = ($ratiox $ratioy) ? $ratiox $ratioy;
        
        
// don't enlarge the image
        
if ($_GET('ne') == 1)
            
$ratio = ($ratio 1) ? $ratio;
        
        
// new dimensions
        
$new_width round($width $ratio);
        
$new_height round($height $ratio);

        
$new_image imagecreatetruecolor($new_width$new_height);
        
$transparent imagecolorallocatealpha($new_image2382382380);
        
imagefill($new_image00$transparent);

        if (
imagecopyresampled($new_image$image0000$new_width
                
$new_height$width$height))
            switch (
$type) {
                case 
IMAGETYPE_GIF:
                case 
IMAGETYPE_PNG
                    
imagepng($new_image$thumb_file_name); 
                    break;
                default: 
                    
imagejpeg($new_image$thumb_file_name80); 
                    break;
        }
    }

    
// display old or new thumbnail
    
$type_mime image_type_to_mime_type(exif_imagetype($thumb_file_name));
    
header('Content-type: ' $type_mime);
    
readfile($thumb_file_name);

///////////////////////////////////////////////////////////////////////////
// end of script
///////////////////////////////////////////////////////////////////////////

?>
Zadal/a: Jan Horák


pridej.cz

> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera

Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.


Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze