webForumDet fria alternativet

Thumbnail generator lik ImageGen för ASP.NET

PHPur PHP

8 svar · 346 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1

Är ute efter ett färdigt script som likt ImageGen för ASP.NET kan visa thumbnails.

Använder wordpress, så jag vill via en enkel fil kunna visa thumbnails on-the-fly så att säga.

Typ:

/scriptname.php?image=/sökväg/till/bilden&width=150&height=250

Så visas bilden i den sizen.

Har nu en Random Photo-funktion som skall visa lite bilder. Men jag vill inte sitta och resizea alla bilder som den skall visa.

StefanBergfeldtMedlem sedan sep. 2004828 inlägg
Fredde MannenMedlem sedan nov. 20014 054 inlägg
#3

StefanBergfeldt skrev:

http://www.guffa.com/Programming_archive.asp?id=21

Ja nu var juh detta ASP.NET, där har jag redan ImageGen flitigt.

Jag är ute efter en i PHP som är lik ImageGen. :)

fiddlerMedlem sedan juli 20023 617 inlägg
#4

Hade ett gammalt skript liggande. Tar argumenten "pic" och "width".

<?
function thumb($width,$pic){
	
	$stor_bild_url = $pic;
	$liten_max_x = $width;
	$liten_kvalite = 80;

	// Läser in den stora bilden och kollar storleken på den.
	$stor_bild = imagecreatefromjpeg ($stor_bild_url);
	$stor_x = imagesx ($stor_bild);
	$stor_y = imagesy ($stor_bild);

	// Räknar ut $k som är förhållandet mellan bredden och höjden.
	$k = $liten_max_x / $stor_x;

	// Räknar ut bredden och höjden på nya bilden.
	$liten_x = round($k * $stor_x);
	$liten_y = round($k * $stor_y);

	// Skapar nya bilden.
	$liten_bild = imagecreatetruecolor ($liten_x, $liten_y);
	imagecopyresampled ($liten_bild, $stor_bild, 0, 0, 0, 0, $liten_x, $liten_y, $stor_x, $stor_y);

	// Visar mini-bilden
	imagejpeg ($liten_bild,'', $liten_kvalite);
	
	//Tar bort bilderna ur minnet på PHP.
	imagedestroy ($liten_bild);

	//Slut på thumbnail-skriptet
}

if(isset($_GET['pic']))
	{
		$width = $_GET['width'];
		$pic = $_GET['pic'];
		thumb($width,$pic);
	}
?>
SPiNMedlem sedan mars 20007 896 inlägg
#5

Det ska väl tilläggas till fiddlers inlägg att GD måste vara inkompilerat/installerat med PHP för att funktionen ska fungera.

fiddlerMedlem sedan juli 20023 617 inlägg
#6

SPiN skrev:

Det ska väl tilläggas till fiddlers inlägg att GD måste vara inkompilerat/installerat med PHP för att funktionen ska fungera.

Precis. Skriptet har endast stöd för jpeg och, såg jag när jag postat, innehåller lite rester från ett tidigare skript. Jag kan fixa till vid tillfälle, men testa gärna om det fungerar som du vill.

StefanBergfeldtMedlem sedan sep. 2004828 inlägg
#7

Sorry, jag som läser slarvigt :P

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#8
<?php
/**
 * Make thumbs from JPEG, PNG, GIF source file
 *
 * $tmpname = imagesource;    
 * $size - max width size
 * $save_dir - destination folder
 * $save_name - tnumb new name
 * 
 * Author:  LEDok - http://www.citadelavto.ru/
* Modified by: Fredde - http://www.malmstroem.info/
 */

function img_resize( $tmpname, $size, $save_dir, $save_name )
    {
    $save_dir .= ( substr($save_dir,-1) != "/") ? "/" : "";
        $gis       = GetImageSize($tmpname);
    $type       = $gis[2];
    switch($type)
        {
        case "1": $imorig = imagecreatefromgif($tmpname); break;
        case "2": $imorig = imagecreatefromjpeg($tmpname);break;
        case "3": $imorig = imagecreatefrompng($tmpname); break;
        default:  $imorig = imagecreatefromjpeg($tmpname);
        } 

        $x = imageSX($imorig);
        $y = imageSY($imorig);
        if($gis[0] <= $size)
        {
        $av = $x;
        $ah = $y;
        }
            else
        {
            $yc = $y*1.3333333;
            $d = $x>$yc?$x:$yc;
            $c = $d>$size ? $size/$d : $size;
              $av = $x*$c;        //?????? ???????? ????????
              $ah = $y*$c;        //????? ???????? ????????
        }    
        $im = imagecreate($av, $ah);
        $im = imagecreatetruecolor($av,$ah);
    	imagecopyresized($im,$imorig,0,0,0,0,$av,$ah,$x,$y);
		// output 
		switch($type)
		{
			case "1": header("content-type: image/gif"); break;
			case "2": header("content-type: image/jpeg"); break;
			case "3": header("content-type: image/png"); break;
			default:  header("content-type: image/jpeg");
		} 
	
                // display only.. 
		imagejpeg($im);
		imagedestroy($im);
    }
    
	// resize image.
	img_resize($_GET['image'],$_GET['width'], "/wp-content/dumps/","name"); 
?>

Hittade en kod snutt på nätet som jag modifierade lite granna som gör det jag vill... tillsvidare i alla fall. :)

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#9

Dock tror jag att jag skulle behöva implementera någon form av cachning av bilderna som använder scriptet.

Har ni några tips på hur man bör göra det?

Jag funderade på om man skulle hasha image-sökvägen och önskade storleken. Och spara den som fil, för att sedan när scriptet körs igen med samma sökväg och samma storlek, så istäälet för att förminska bilden som angivits så läser man in en fil som har filnamnet i form av hash-summan för image-sökvägen och storleken.

Bör väl snabba upp processen lite, speciellt om det är stora filer.

Eller?

268 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
132 ms — hämta forumlista (db)
126 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)