Что лучше всего использовать phpthumb? - PullRequest
0 голосов
/ 19 февраля 2012

В настоящее время я использую phpthumb для создания миниатюр для изображений профиля. http://phpthumb.gxdlabs.com/

Это мой текущий метод:

<?php
$path_to_profile_pic = '../icons/default.png';
$profile_pic = file_get_contents('icons/default.png');
$small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true);
$small_profile_pic->adaptiveResize(25, 25);
$small_profile_picAsString = $small_profile_pic->getImageAsString();
?>
<img src="data:image/png;base64,<?php echo base64_encode($small_profile_picAsString); ?>" width="25" height="25" />

Однако, это очень медленно из-за base64, потому что он генерирует большое количество текста в вашем коде. Как лучше всего использовать phpthumb для создания миниатюр?

Редактировать

Есть ли способ сделать это без сохранения другого изображения, так как оно будет занимать больше места?

1 Ответ

2 голосов
/ 19 февраля 2012

Вам лучше всегда генерировать уменьшенные версии изображений при загрузке / создании, а не пытаться предоставлять их через php-скрипты по запросу.Вы можете кэшировать сгенерированные файлы в файловую систему с помощью php, используя некоторый ваш код, но это все же намного медленнее, чем обслуживать их с помощью Apache.

Если вы не можете создавать миниатюры при загрузке / создании, вы можете оптимизировать текущую реализацию, кэшируя уменьшенный миниатюру в файловую систему и обслуживая их для каждого последующего запроса:

<?php
$path_to_thumb_pic = '../icons/default_thumb.png';
if (!file_exists($path_to_thumb_pic)) {
  $path_to_profile_pic = '../icons/default.png';
  $profile_pic = file_get_contents('icons/default.png');
  $small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true);
  $small_profile_pic->adaptiveResize(25, 25);
  $small_profile_pic->save($path_to_thumb_pic);
}
?>

<img src="<?php echo $path_to_thumb_pic; ?>" width="25" height="25" />
...