Генерация image preview в PHP

Статус
В этой теме нельзя размещать новые ответы.
  • Заблокирован
  • #21
Например?
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся


Вроде же нормальный класс?

Да это хорошие скрипты но платные мне нужно,что-то попроще заточенные под СЕО,чисто для привлечения картиночного трафа.
 
Да это хорошие скрипты но платные мне нужно,что-то попроще заточенные под СЕО,чисто для привлечения картиночного трафа.
Хочу кнопку бабло.
Могу штрафануть за оффтопик. Поиск скрипта - отдельный подфорум.
 
  • Заблокирован
  • #23
Проще всего хранить thumb в той же папке в которой и оригинал но дописывать к имени например t_.
Или к концу подписывать, так: .t.jpg, чтобы в списке файлов они вместе шли (смотря как вам удобнее)

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

Например, на сайте есть фотогалерея. Оператор в админке загружает фотографию zimnya_trassa.jpg.

Во-первых, сама фотография после проверки сохраняется, как
zimnya_trassa.p850x340.jpg
во-вторых, сразу же (и только один раз) создается превьюшка
t_zimnya_trassa.p850x340.jpg

Теперь при выводе кучи првьюшек можно повесить на каждую onClick, который будет самостоятельно открывать полную версию фотографии (отбрасывая t_), ресайзить под нее окошко и центрировать его на странице. Без лишнего запроса к серверу, без обращения GD к фотографии.
 
_budjak.com.ua/files/galereii.rar

Смотрите здесь....

Токо код несильно ругайте - я начинающий PHP и писал для себя.

а здесь пример работы _budjak.com.ua/index.php?name=fotomore2007

P>S> То о чем все тут говорят но никто не показывает :ah:
 
Можно делать еще так:
папка images - оригинальные картинки
папка images/tmbs - превьюшки
в папку images/tmbs кидаешь .htaccess такого содержания:
Код:
ErrorDocument 404 /images/tmb/noimg.php

и туда же кидаешь noimg.php:
PHP:
<?php
	$filename = basename($_SERVER["REQUEST_URI"]);
	$dir      = $_SERVER["DOCUMENT_ROOT"] . dirname($_SERVER["REQUEST_URI"]);
	$origfile = realpath($dir . '/../' . $filename);
	$newfile  = $dir . '/' . $filename;
    $nw       = 100;
    $nh       = 80;

	if($origfile){
		list($width,$height,$otype)=getimagesize($origfile);
		
		switch($otype) {
			case 1:  $img = imagecreatefromgif($origfile); break;
			case 2:  $img = imagecreatefromjpeg($origfile); break;
			case 3:  $img = imagecreatefrompng($origfile); break;
		}

		if($img){		
	        $scale1 = $scale2 = 99999999;
	
	        if($nw) $scale1 = $nw / $height;
	        if($nh) $scale2 = $nh / $width;
	                
	        $scale      = min($scale1, $scale2);    
			$new_width  = floor($width * $scale);
			$new_height = floor($height * $scale);
	                
	
			$newimg = imagecreatetruecolor($new_width, $new_height);
			imagecopyresampled($newimg, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
	
			switch($otype) {
				case 1: imagegif($newimg, $newfile);  header('Content-Type: image/gif');  imagegif($newimg); break;
				case 2: imagejpeg($newimg, $newfile); header('Content-Type: image/jpeg'); imagejpeg($newimg); break;
				case 3: imagepng($newimg, $newfile);  header('Content-Type: image/png');  imagepng($newimg);break;
			}
		}
	}
	header('Content-Type: image/gif');
	$noimg = $dir . '/noimg.gif';
	$handle = fopen($noimg, "r");
	print(fread($handle, filesize($noimg)));
	fclose($handle);
?>

ну и соответственно к ним до кучи noimg.gif

Смысл таков - обращаешься за тумбой в папку тумб. Если она есть - выдается сразу, если нет - по 404 ошибке перенаправляется на скрипт, который сгенерит ее и положит в папку и заодно выдаст в поток. Тоесть тумбы на лету генерятся только один раз.

З.Ы. Понимаю, что ответ запоздалый, но ведь кому-нибудь же может пригодиться :)
 
Пробовал я всякие разные классы для создания превьюшек, но когда размер исходной фотки больше 5 мегов, то проще использовать ImageMagick (Для просмотра ссылки Войди или Зарегистрируйся)

Там куча примеров для работы с изображениями.
 
Можно делать еще так:
папка images - оригинальные картинки
папка images/tmbs - превьюшки
..............
Смысл таков - обращаешься за тумбой в папку тумб. Если она есть - выдается сразу, если нет - по 404 ошибке перенаправляется на скрипт, который сгенерит ее и положит в папку и заодно выдаст в поток. Тоесть тумбы на лету генерятся только один раз.
А интересно как быть если в папке images есть еще папка foto1 и foto2 а там файлы с одинаковыми именами?
или я скрипт нормально немогу прочесть :( :ah:
 
А интересно как быть если в папке images есть еще папка foto1 и foto2 а там файлы с одинаковыми именами?
или я скрипт нормально немогу прочесть :( :ah:

Все верно, никак :) Скрипт не расчитан на сложную структуру подпапок.

Тут три решения:
1. Лобовое.
В каждую подпапку foto1, foto2, ... кладешь этот скрипт, htaccess, создаешь папку для тумб.
2. Правильное.
Дописать в скрипте обработку подпапок
3. Чуть упрощеное второе.
rewrite'ом переделывать обращения вида:
Код:
images/thumbs/user1/foto1_1/my.jpg
в
Код:
images_thumbs_user1_foto1__1_my.jpg
ну и чутка поправить в скрипте, чтоб правильные оригинальные файлы брал.

Подробнее надо?
 
Или к концу подписывать, так: .t.jpg, чтобы в списке файлов они вместе шли (смотря как вам удобнее)
ну, лично мне удобнее когда отдельно сгруппированы превьюшки и отдельно оригинальные изображения.

Еще интересный прием: можно дописывать к имени файла получившуюся ширину и высоту картинки, чтобы при демонстрации не нужно было вычислять эти параметры на лету.
думается мне getimagesize сработает быстрее explode :)

Теперь при выводе кучи првьюшек можно повесить на каждую onClick, который будет самостоятельно открывать полную версию фотографии (отбрасывая t_), ресайзить под нее окошко и центрировать его на странице. Без лишнего запроса к серверу, без обращения GD к фотографии.

глупости какие-то... какое ещё обращение к GD? :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху