Tutorial avatar random

Propuneri şi proiecte în curs de desfăşurare de Extensii, traduceri, stiluri, teme, avataruri şi butoane.
Reguli forum
Aveti o problema si vreti sa primiti ajutor? Click aici ! Nu uitati si de regulamentul forumului !
Închis
Marian96
Utilizator înregistrat
Mesaje: 990
Membru din: 26-Dec-2005, 14:01:59
Versiune: 3.0.5
Ext: Da
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Bucuresti

Tutorial avatar random

Mesaj de Marian96 »

Am facut acest tutorial pentru ca multi se intreaba cum se face acest lucru si ori nu il fac bine ori nu ii reusesc.

1)Creati un folder pe ftp.

2)Salvati asta intr-un fisier .php cu numele index.php

Cod: Selectaţi tot

<?php
$folder = ''; 
$exts = 'jpg jpeg png gif'; 
$files = array(); $i = -1; 
if ('' == $folder) $folder = './'; 
$handle = opendir($folder); 
$exts = explode(' ', $exts); 
while (false !== ($file = readdir($handle))) { 
foreach($exts as $ext) { 
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { 
$files[] = $file; 
++$i; 
} } } 
closedir($handle); 
mt_srand((double)microtime()*1000000); 
$rand = mt_rand(0, $i); 
header('Location: '.$folder.$files[$rand]); 
?>
2)Editati sau creeati fisierul .httaccess cu urmatoarele linii:

Cod: Selectaţi tot

RewriteEngine ON

RewriteRule ^poza.gif/$ index.php
RewriteRule ^poza.gif$ index.php
3)Aceste 2 fisiere le puneti in folderul care l-ati creat pe ftp.

4)Puneti imaginile cu avatare in folderul care l-ati creat.

5)Numiti folderul:
cevretivoi.jpg

Cam asta a fost tot.
ATENTIE:SCRIPTUL RANDOM NU MERGE PE HOSTURI CARE NU AU MOD_REWRITE ACTIVAT
Avatar utilizator
octaviansan
Utilizator înregistrat
Mesaje: 1124
Membru din: 28-Iun-2006, 13:56:23
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Bucureşti, RO
Contact:

Mesaj de octaviansan »

Sau aici mai simplu.
Marian96
Utilizator înregistrat
Mesaje: 990
Membru din: 26-Dec-2005, 14:01:59
Versiune: 3.0.5
Ext: Da
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Bucuresti

Mesaj de Marian96 »

Aici e mai detaliat :)
Avatar utilizator
53rg1u
Utilizator înregistrat
Mesaje: 457
Membru din: 23-Iun-2007, 13:07:25
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: sGz.ro

Mesaj de 53rg1u »

poi da si eu la campu' imagine asociata de la profil ce bag ??
Imi rezerv dreptul de a scrie cu greseli gramaticale !!!

GodClanCS | Blog
Avatar utilizator
orynider
Autor de ExtensiiAutor de Extensii
Mesaje: 259
Membru din: 17-Noi-2005, 19:39:36
Versiune: 3.3.0-a1
Ext: Da
Server: UNIX/Linux
Nivel phpBB: Foarte experimentat
Nivel php: Foarte experimentat
Localitate: Arad, România
Contact:

Mesaj de orynider »

O să vă placă şi scriptul meu cu GD:

1. Creiaţi un fişier image.php care îl puneţi în root:

Cod: Selectaţi tot

<?php
header("Content-type: image/png");

$avatars[] = "avatars/image.png"; 
$avatars[] = "avatars/image1.png"; 
$avatars[] = "avatars/image2.png"; 
$avatars[] = "avatars/image3.png"; 
$avatars[] = "avatars/image4.png";
$avatars[] = "avatars/image5.png"; 

$avatar = $avatars[mt_rand(0, count($avatars)-1)];

$newavatar = imagecreatefrompng($avatar);
imagepng($newavatar);
imagedestroy($newavatar);
?>
2. Creeaţi un folder "avatars" in root (rădăcina site-ului), şi uploadaţi imaginile PNG cu avatare.

3. Editati sau creeati fisierul .httaccess cu urmatoarele linii:

Cod: Selectaţi tot

RewriteEngine On
RewriteRule image.png image.php
4. În profil scrieţi http://numesite.ro/image.png

Notă: Imaginea image.png va fi validă doar dacă MOD_REWRITE este suporttat de serverul pe care găzduiţi site-ul. Pentru a verifica dacă scriptul fucţionează intrţi în http://numesite.ro/image.php şi daţi refresh.

edit:

Am mai perfecţionat codul pentru image.php:

Cod: Selectaţi tot

<?php

$fullpath = 'avatars/'; //directorul cu avatare
$thumbnail_size = 110; //mărimea maximă admisă a avatarului în pixeli

if( isset($_GET['pic_name']) )
{
	$pic_name = $_GET['pic_name'];
}
else
{
	$avatars[] = "image.png"; 
	$avatars[] = "image1.png"; 
	$avatars[] = "image2.png"; 
	$avatars[] = "image3.png"; 
	$avatars[] = "image4.png";
	$avatars[] = "image5.png"; 

	$pic_name = $avatars[mt_rand(0, count($avatars)-1)];
}

 
$pic_fullpath = $fullpath . $pic_name; 
$pic_filetype = strtolower(substr($pic_name, strlen($pic_name) - 4, 4));

switch ($pic_filetype)
{
	case '.gif':
		$file_header = 'Content-type: image/gif';
		$read_function = 'imagecreatefromgif';
		break;
	case '.jpeg':
	case '.jpg':
	case '.pjpeg':
		$file_header = 'Content-type: image/jpeg';
		$read_function = 'imagecreatefromjpeg';
		break;
	case '.png':
		$file_header = 'Content-type: image/png';
		$read_function = 'imagecreatefrompng';
		break;
	default:
		header('Content-type: image/jpeg');
		$file_header = 'Content-type: image/jpeg';
		$read_function = 'imagecreatefromjpeg';
}


header($file_header);

$pic_size = @getimagesize($pic_fullpath);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];


if ($pic_width > $pic_height)
{
	$thumbnail_width = $thumbnail_size;
	$thumbnail_height = $thumbnail_size * ($pic_height / $pic_width);
}
else
{
	$thumbnail_height = $thumbnail_size;
	$thumbnail_width = $thumbnail_size * ($pic_width / $pic_height);
} 

$thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height);

$resize_function = 'imagecopyresampled';

$source = $read_function($pic_fullpath);

@$resize_function($thumbnail, $source, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);


switch ( $pic_filetype )
{
	case '.gif':
		imagegif($thumbnail);
		break;
	case '.jpeg':
	case '.jpg':
	case '.pjpeg':
		imagejpeg($thumbnail);
		break;
	case '.png':
		imagepng($thumbnail);
		break;
	default:
		return false;
}

imagedestroy($thumbnail);

?>
Acum ar mai trebui unite cele două abordări a lui Marin şi a mea să ia şi pozele automat dintr-un folder şi să le şi redimensioneze automat ...

edit: Gata:

Cod: Selectaţi tot

<?php

//$fullpath = 'Poze_Masini/Novedad/original/';
$fullpath = 'avatars/';
$thumb_size = 120;


$exts = 'jpg jpeg png gif';

if ( empty($fullpath) )
{ 
	$fullpath = './';
}

if( isset($_GET['pic_size']) )
{
	$thumbnail_size = ( ($_GET['pic_size'] < '256') ? $_GET['pic_size'] : '256' );
}
else
{
	$thumbnail_size = ( !empty($thumb_size) ? $thumb_size : '120' );
}

if( isset($_GET['pic_name']) )
{
	$pic_name = $_GET['pic_name'];
}
else
{
	$avatars = array(); $i = -1;
 
	$handle = opendir($fullpath);

	$exts = explode(' ', $exts);
 
	while (false !== ($file = readdir($handle))) 
	{ 
		foreach($exts as $ext) { 
			if (preg_match('/\.'.$ext.'$/i', $file, $test)) 
			{ 
				$avatars[] = $file; 
				++$i; 
			} 
		}
 	} 
	closedir($handle);

	// $pic_name = $avatars[mt_rand(0, count($avatars)-1)];
	$pic_name = $avatars[mt_rand(0, $i)];
}

 
$pic_fullpath = $fullpath . $pic_name; 
$pic_filetype = strtolower(substr($pic_name, strlen($pic_name) - 4, 4));

switch ($pic_filetype)
{
	case '.gif':
		$file_header = 'Content-type: image/gif';
		$read_function = 'imagecreatefromgif';
		break;
	case '.jpeg':
	case '.jpg':
	case '.pjpeg':
		$file_header = 'Content-type: image/jpeg';
		$read_function = 'imagecreatefromjpeg';
		break;
	case '.png':
		$file_header = 'Content-type: image/png';
		$read_function = 'imagecreatefrompng';
		break;
	default:
		header('Content-type: image/jpeg');
		$file_header = 'Content-type: image/jpeg';
		$read_function = 'imagecreatefromjpeg';
}


header($file_header);

$pic_size = @getimagesize($pic_fullpath);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];


if ($pic_width > $pic_height)
{
	$thumbnail_width = $thumbnail_size;
	$thumbnail_height = $thumbnail_size * ($pic_height / $pic_width);
}
else
{
	$thumbnail_height = $thumbnail_size;
	$thumbnail_width = $thumbnail_size * ($pic_width / $pic_height);
} 

$thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height);

$resize_function = 'imagecopyresampled';

$source = $read_function($pic_fullpath);

@$resize_function($thumbnail, $source, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);


switch ( $pic_filetype )
{
	case '.gif':
		imagegif($thumbnail);
		break;
	case '.jpeg':
	case '.jpg':
	case '.pjpeg':
		imagejpeg($thumbnail);
		break;
	case '.png':
		imagepng($thumbnail);
		break;
	default:
		return false;
}

imagedestroy($thumbnail);

?>
Demo:
:: Normal image3.php
:: _GET image.php?pic_name=ory_84_100_summer2.jpg
:: Rewrite image3.png
:: Resize image3.png?pic_size=200

The Mx-Publisher CMS Project | Mx-Publisher@github | Mx-Publisher CMS
Demo Styles: phpBB3 | | |
Avatar utilizator
octaviansan
Utilizator înregistrat
Mesaje: 1124
Membru din: 28-Iun-2006, 13:56:23
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Bucureşti, RO
Contact:

Mesaj de octaviansan »

Parca al tau e mai complex .
Avatar utilizator
orynider
Autor de ExtensiiAutor de Extensii
Mesaje: 259
Membru din: 17-Noi-2005, 19:39:36
Versiune: 3.3.0-a1
Ext: Da
Server: UNIX/Linux
Nivel phpBB: Foarte experimentat
Nivel php: Foarte experimentat
Localitate: Arad, România
Contact:

Mesaj de orynider »

E mai complexă untima variantă dar are mai multe facilităţi.

The Mx-Publisher CMS Project | Mx-Publisher@github | Mx-Publisher CMS
Demo Styles: phpBB3 | | |
mariushca
Utilizator înregistrat
Mesaje: 80
Membru din: 09-Iul-2007, 17:51:41
Versiune: 3.0.6
Ext: Nu
Server: Windows
Nivel phpBB: Mediu

Mesaj de mariushca »

da... :lol:
CaTaNhA
TraducatorTraducator
Mesaje: 1077
Membru din: 06-Feb-2007, 23:40:13
Versiune: 2
Ext: Da
Server: UNIX/Linux
Nivel phpBB: Experimentat
Localitate: Ramnicu Valcea

Mesaj de CaTaNhA »

Marian, ziceai ca e facut de tine ?

http://photomatt.net/scripts/randomimage/
Marian96
Utilizator înregistrat
Mesaje: 990
Membru din: 26-Dec-2005, 14:01:59
Versiune: 3.0.5
Ext: Da
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Bucuresti

Mesaj de Marian96 »

e facut de mine ti-am zis si pe myforum ca scripturile nu sunt facute de mine dar tutorialul eu l-am creat
edit:lex eu sunt dkk de pe forumu bimbizone ca sa stii :D
Închis

Înapoi la “Proiecte”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Bing [Bot] și 30 vizitatori