2012-01-23 10 views
-1

Я использую следующий код для преобразования больших изображений на более мелкие один ...поколение большого пальца на лету

$filename= $_GET['filename']; 
$width = $_GET['width']; 
$height = $_GET['height']; 
$path="http://localhost/pics/"; //finish in "/" 


// Content type 
header('Content-type: image/jpeg'); 

// Get new dimensions 
list($width_orig, $height_orig) = getimagesize($path.$filename); 

if ($width && ($width_orig < $height_orig)) { 
    $width = ($height/$height_orig) * $width_orig; 
} else { 
    $height = ($width/$width_orig) * $height_orig; 
} 

// Resample 
$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($path.$filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

// Output 
imagejpeg($image_p, null, 100); 

// Imagedestroy 
imagedestroy ($image_p); 

И его работы идеально, как может я кэшировать изображения? пожалуйста, помогите мне с этим. Благодарю.

+1

Если вы действительно хотите научиться делать это самостоятельно - почему бы не использовать существующую библиотеку миниатюр, которая делает кеширование из коробки? –

+0

вы можете мне предложить, пожалуйста? – seoppc

+0

Google 'php thumbnail generator' и использовать первый хит –

ответ

1

Второй аргумент для imagejpeg - это $ filename для сохранения изображения. Просто сохраните свои изображения на диске.

+0

Я использую smarty, это поможет в кеше? – seoppc

+0

Точка кэша - это предотвращение запуска сценария для каждого запроса. Хранение изображения на диск достигнет этого. Все, что вам нужно сделать, это проверить, если (file_exists ('/ path/to/cache /'.$ filename)) перед запуском вашего эскизного кода. Я давно не использовал Smarty, поэтому у него может быть какой-то способ справиться с этим, но IMO вам гораздо лучше, чем просто. – whichdan

0

В моем oppinion лучший способ кэширования изображений - использовать eTag.

Более подробную информацию о Yahoo!

Не легко установить минимальный CND, но это повышает ваш сайт!

Я уверен, что существует множество минимальных сценариев, которые помогут вам начать работу.

2

Почему бы не сохранить миниатюру, то вы можете назвать эскизы, как это:

'<img src="/path/to/cache/thumbnail.jg" />'

I модифицируют Йор код для этого:

<?php 
$filename= $_GET['filename']; 
$width = $_GET['width']; 
$height = $_GET['height']; 
$path="http://localhost/pics/"; //finish in "/" 



// Get new dimensions 
list($width_orig, $height_orig) = getimagesize($path.$filename); 

if ($width && ($width_orig < $height_orig)) { 
    $width = ($height/$height_orig) * $width_orig; 
} else { 
    $height = ($width/$width_orig) * $height_orig; 
} 

// Resample 
$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($path.$filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

// Output 
imagejpeg($image_p,'/path/to/cache/'.$filename, 100); 

// Imagedestroy 
imagedestroy ($image_p); 

?> 
+0

, что бы идеально, но что делать, если я удаляю/обновляю увеличенное изображение ... – seoppc

+0

, если вы удаляете/обновляете большое изображение, поэтому вы должны удалить/обновить миниатюры. –