begin process at 2012 02 13 07:25:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CREEZ DE LA 3D SUR VOS IMAGES AVEC 1 LIGNE DE CODE

CREEZ DE LA 3D SUR VOS IMAGES AVEC 1 LIGNE DE CODE


 Information sur la source

Note :
8,71 / 10 - par 7 personnes
8,71 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :3d, image3d, image Niveau :Initié Date de création :22/05/2004 Vu / téléchargé :7 601 / 449

Auteur : pgpp

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Avec l'include 'Image3D.php' il vous suffit d'écrire :
Image3D($im,$r,$v,$b,$dir,$h);

Pour la signification des paramètres, voyez la source :

Source

  • <?
  • /*********************************************/
  • /* Nom : Image3D */
  • /* Auteur : pgpp05@hotmail.com */
  • /* Créé : 22/05/2004 */
  • /* Modifié : 22/05/2004 */
  • /*********************************************/
  • /* Utilité : Crée un effet 3D sur une image */
  • /*********************************************/
  • /* Arguments : ($im,$dr,$dg,$db,$dir,$h) */
  • /* $im : Pointeur sur l'image */
  • /* $dr,$dg,$db : Composantes couleurs */
  • /* r,v,b à décaler sur l'effet 3D */
  • /* $dir : direction de la 3D, combinaison */
  • /* booléenne des constantes sivantes: */
  • /* BAS|HAUT|DROITE|GAUCHE|X2|Y2 */
  • /* X2,Y2 doublent l'effet sur X ou Y */
  • /* $h : Hauteur de l'effet 3D */
  • /*********************************************/
  • define(BAS,1);
  • define(HAUT,2);
  • define(DROITE,4);
  • define(GAUCHE,8);
  • define(Y2,16);
  • define(X2,32);
  • function Image3D(&$im,$dr,$dg,$db,$dir,$h)
  • {
  • global $dx,$dy;$dx=$dy=0;
  • $sx=imageSX($im);$sy=imageSY($im);
  • if(($dir&BAS)==BAS) $dy-=1;
  • if(($dir&HAUT)==HAUT) $dy+=1;
  • if(($dir&DROITE)==DROITE) $dx-=1;
  • if(($dir&GAUCHE)==GAUCHE) $dx+=1;
  • if(($dir&Y2)==Y2) $dy*=2;
  • if(($dir&X2)==X2) $dx*=2;
  • if($dy<0)
  • for($x=0;$x<=$sx;$x++)
  • scan3D($im,$x,$sy,$h,$dr,$dg,$db);
  • if($dy>0)
  • for($x=0;$x<=$sx;$x++)
  • scan3D($im,$x,0,$h,$dr,$dg,$db);
  • if($dx<0)
  • for($y=1;$y<$sy;$y++)
  • scan3D($im,$sx,$y,$h,$dr,$dg,$db);
  • if($dx>0)
  • for($y=1;$y<$sy;$y++)
  • scan3D($im,0,$y,$h,$dr,$dg,$db);
  • }
  • function scan3D(&$im,$x,$y,$h,$dr,$dg,$db)
  • {
  • global $dx,$dy;
  • $cx=0;$cy=0;
  • if($dx>0)$cx=1;if($dx<0)$cx=-1;if($dy>0)$cy=1;if($dy<0)$cy=-1;
  • $sx=imageSX($im);$sy=imageSY($im);
  • while($x>=0 && $y>=0 && $x<=$sx && $y<=$sy)
  • {
  • $x+=$dx;$y+=$dy;
  • $bx=$by=false;
  • while($x>=0 && $y>=0 && $x<=$sx && $y<=$sy)
  • {
  • if(($c=imageColorAt($im,$x,$y))!=0) break;
  • else if($bx===false && $by===false){$bx=$x;$by=$y;}
  • $x+=$dx;$y+=$dy;
  • }
  • if($x<0 || $y<0 || $x>$sx || $y>$sy) return(1);
  • if($bx===false || $by===false) continue;
  • if(abs(($bx-$x)/($dx?$dx:1))>=$h) $bx=$x-$dx*$h;
  • if(abs(($by-$y)/($dy?$dy:1))>=$h) $by=$y-$dy*$h;
  • $c=imageColorsForIndex($im,$c);
  • $r=$c['red']+$dr;$g=$c['green']+$dg;$b=$c['blue']+$db;
  • if($r>255)$r=255;if($r<0)$r=0;
  • if($g>255)$g=255;if($g<0)$g=0;
  • if($b>255)$b=255;if($b<0)$b=0;
  • if(($color=ImageColorExact($im,$r,$g,$b))==-1) $color=ImageColorAllocate($im,$r,$g,$b);
  • ImageLine($im,$bx,$by,$x-$cx,$y-$cy,$color);
  • }
  • return(0);
  • }
  • $im=ImageCreate(300,170);
  • ImageColorAllocate($im,255,255,255);
  • ImageColorAllocate($im,128,80,128);
  • ImageColorAllocate($im,30,200,30);
  • ImageColorAllocate($im,150,0,0);
  • ImageColorAllocate($im,0,60,150);
  • ImageColorAllocate($im,150,150,0);
  • ImageFilledPolygon($im,array(50,50,100,80,150,75,200,50,100,35,150,25,80,15),7,3);
  • //ImageFilledEllipse($im,250,100,75,50,2);
  • ImageFilledRectangle($im,240,20,255,150,2);
  • ImageFilledRectangle($im,260,50,275,150,4);
  • ImageFilledRectangle($im,280,80,295,150,5);
  • ImageString($im,5,30,115,"function Image3D()",1);
  • ImageString($im,5,30,135,"pgpp05@hotmail.com",1);
  • Image3D($im,60,60,60,HAUT|GAUCHE,6);
  • ImagePNG($im);
  • ?>
<?
/*********************************************/
/* Nom     : Image3D                         */
/* Auteur  : pgpp05@hotmail.com              */
/* Créé    : 22/05/2004                      */
/* Modifié : 22/05/2004                      */
/*********************************************/
/* Utilité : Crée un effet 3D sur une image  */
/*********************************************/
/* Arguments : ($im,$dr,$dg,$db,$dir,$h)     */
/*   $im : Pointeur sur l'image              */
/*   $dr,$dg,$db : Composantes couleurs      */
/*       r,v,b à décaler sur l'effet 3D      */
/*   $dir : direction de la 3D, combinaison  */
/*       booléenne des constantes sivantes:  */
/*       BAS|HAUT|DROITE|GAUCHE|X2|Y2        */
/*       X2,Y2 doublent l'effet sur X ou Y   */
/*   $h : Hauteur de l'effet 3D              */
/*********************************************/

define(BAS,1);
define(HAUT,2);
define(DROITE,4);
define(GAUCHE,8);
define(Y2,16);
define(X2,32);

function Image3D(&$im,$dr,$dg,$db,$dir,$h)
{
  global $dx,$dy;$dx=$dy=0;
  $sx=imageSX($im);$sy=imageSY($im);
  if(($dir&BAS)==BAS) $dy-=1;
  if(($dir&HAUT)==HAUT) $dy+=1;
  if(($dir&DROITE)==DROITE) $dx-=1;
  if(($dir&GAUCHE)==GAUCHE) $dx+=1;
  if(($dir&Y2)==Y2) $dy*=2;
  if(($dir&X2)==X2) $dx*=2;

  if($dy<0)
    for($x=0;$x<=$sx;$x++)
      scan3D($im,$x,$sy,$h,$dr,$dg,$db);
  if($dy>0)
    for($x=0;$x<=$sx;$x++)
      scan3D($im,$x,0,$h,$dr,$dg,$db);
  if($dx<0)
    for($y=1;$y<$sy;$y++)
      scan3D($im,$sx,$y,$h,$dr,$dg,$db);
  if($dx>0)
    for($y=1;$y<$sy;$y++)
      scan3D($im,0,$y,$h,$dr,$dg,$db);
}

function scan3D(&$im,$x,$y,$h,$dr,$dg,$db)
{
  global $dx,$dy;
  $cx=0;$cy=0;
  if($dx>0)$cx=1;if($dx<0)$cx=-1;if($dy>0)$cy=1;if($dy<0)$cy=-1;
  $sx=imageSX($im);$sy=imageSY($im);
  while($x>=0 && $y>=0 && $x<=$sx && $y<=$sy)
  {
    $x+=$dx;$y+=$dy;
    $bx=$by=false;
    while($x>=0 && $y>=0 && $x<=$sx && $y<=$sy)
    {
      if(($c=imageColorAt($im,$x,$y))!=0) break;
      else if($bx===false && $by===false){$bx=$x;$by=$y;}
      $x+=$dx;$y+=$dy;
    }
    if($x<0 || $y<0 || $x>$sx || $y>$sy) return(1);
    if($bx===false || $by===false) continue;
    if(abs(($bx-$x)/($dx?$dx:1))>=$h) $bx=$x-$dx*$h;
    if(abs(($by-$y)/($dy?$dy:1))>=$h) $by=$y-$dy*$h;
    $c=imageColorsForIndex($im,$c);
    $r=$c['red']+$dr;$g=$c['green']+$dg;$b=$c['blue']+$db;
    if($r>255)$r=255;if($r<0)$r=0;
    if($g>255)$g=255;if($g<0)$g=0;
    if($b>255)$b=255;if($b<0)$b=0;
    if(($color=ImageColorExact($im,$r,$g,$b))==-1) $color=ImageColorAllocate($im,$r,$g,$b);
    ImageLine($im,$bx,$by,$x-$cx,$y-$cy,$color);
  }
  return(0);
}


$im=ImageCreate(300,170);
ImageColorAllocate($im,255,255,255);
ImageColorAllocate($im,128,80,128);
ImageColorAllocate($im,30,200,30);
ImageColorAllocate($im,150,0,0);
ImageColorAllocate($im,0,60,150);
ImageColorAllocate($im,150,150,0);
ImageFilledPolygon($im,array(50,50,100,80,150,75,200,50,100,35,150,25,80,15),7,3);
//ImageFilledEllipse($im,250,100,75,50,2);
ImageFilledRectangle($im,240,20,255,150,2);
ImageFilledRectangle($im,260,50,275,150,4);
ImageFilledRectangle($im,280,80,295,150,5);
ImageString($im,5,30,115,"function Image3D()",1);
ImageString($im,5,30,135,"pgpp05@hotmail.com",1);
Image3D($im,60,60,60,HAUT|GAUCHE,6);
ImagePNG($im);
?>

 Conclusion

Les dernières lignes sont un exemple (cf la capture d'écran).

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip UNE BASE DE RECETTES DE CUISINE (AVEC MOTEUR DE RECHERCHE)
Source avec Zip CHAT BETA1 AVEC SALONS (PUBLICS,PRIVÉS,PROTÉGÉS) ET PROFIL U...
Source avec Zip Source avec une capture UN GRAPHIQUE CAMEMBERT EN 3D
Source avec Zip PROTECTION DE VOS PAGES PAR LOGIN ET MOT DE PASSE : SYSTEME ...
Source avec Zip ÉDITEUR PHP AVEC COLORATION SYNTAXIQUE EN TEMPS REEL (PROTOT...

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GESTIONNAIRE DE NEWS BASIQUE AVEC UPLOAD D'IMAGES par cod57
Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
CLASS GALERIE PHOTO par Xiryl
CRÉER UNE IMAGE À PARTIR DU TEXTE par dilar
Source avec Zip Source avec une capture CRÉER UN TERRAIN EN 3D ISO A PARTIR D'UNE HEIGHT MAP par djine

Commentaires et avis

Commentaire de BlackScorpion le 23/05/2004 01:55:44

sa me rappelle les vieux jeu de 80 ^^ c po super bo mais j'aime bien :D

Commentaire de willinfeo le 24/05/2004 10:27:44

Salut a tous,
j'ai rien qui s'affiche. Comment on se sert de ton script ?
Merci

Commentaire de Mandrake83 le 24/05/2004 22:14:01

C'est rare les sources de qualité ici ^^

Commentaire de iubito le 25/05/2004 06:18:24

j'ai pas encore essayé.
Prochaine étape : la 3D en dégradé ? un fondu de couleur 1 à couleur 2, par exemple de gris à blanc, pour avoir un effet comme ici : http://www.myriad-online.com/resources/dogstory/index.html

hein? quoi? je pousse un peu loin ? :-p ok je sors....--------&gt;

^^

Commentaire de Mandrake83 le 25/05/2004 10:09:57

^^

Commentaire de atrickofthetail le 10/06/2004 10:26:35

Ca en jette ! Très bien vraiment, j'ai mis neuf et, avec ta permission, je vais m'en servir pour améliorer mon script d'affichage de l'espace disque ... ^^

byebye,

atrickofthetail

Commentaire de pgpp le 10/06/2004 12:49:15

No problem ! y'a pas de copyright lol
Merci pour vos commentaires !

bye,
pgpp

Commentaire de Marshall_Mathers le 30/11/2004 20:45:59

Ca c'est vraiment ce qu'on appelle ==> 1 Ligne !! ;)

Sinon GOOD !!!

Commentaire de tsimene le 24/02/2010 10:04:41

j'ai tester et j'ai les erreurs suivant : Notice: imagecolorat() [function.imagecolorat]: 8,170 is out of bounds in D:\EasyPHP 2.0b1\www\projet_osonti\Image3D.php on line 61
ensuite
Fatal error: Cannot pass parameter 1 by reference in D:\EasyPHP 2.0b1\www\projet_osonti\index.php on line 58
j'ai mis un include dans le fichier index.php et j'ai passer la fonction avec les paramètres suivants : Image3D('screenshot.jpg',5,5,12,'HAUT',18000);
merci de me dire ce qu'il faut comme préalable pour que ça marche.

Commentaire de pgpp le 24/02/2010 15:36:14

Prérequis ? Quelques bases en PHP et un peu de sens de l'observation peut-être :/
Dans ta ligne il y a deux erreurs flagrantes :
- Le premier paramètre doit être une ressource vers une image (créée par une des fonctions GD imagecreate*)
- Le 5e paramètre doit être une CONSTANTE et non une chaîne de caractères

Ainsi tu aurais du écrire :
$im = imagecreatefromjpeg('screenshot.jpg');
Image3D($im,5,5,12,HAUT,18000);

Mais il reste deux problèmes :
- Un effet 3D de 18000 pixels me paraît un peu... exagéré !!
- L'effet 3D est une simple recopie des pixels de couleur sur le fond (couleur d'index 0) ce qui n'a que peu de sens avec une copie d'écran.
En effet ça ne fonctionne qu'avec des images à palette (couleurs indexées), et j'ignore comment opère imagecreatefromjpeg pour construire sa palette.

PS : il est rarement bon d'utiliser une source datant de 6 ans en arrière...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

:::::: URGENT !!! ENVOI D'IMAGE PAR FTP !!!! ERREUR :::::: [ par kkz_mil3k ] j'essaie d'nevoyer un fichier image gif ou jpg sur un ftp via ce formulaire php :------------------------------------------- //**connecte au ftp sc Comment insérer un champs image ds ma table ?? [ par inceV ] Salut à tous et bonne année 2002 !!!Bon, je n'arrive pas à créer un champs 'image' ds ma table et je ne comprends pas tp commen ça marche, pourriez-vo Faire unr image sur le serveur en PHP [ par fabiin ] Salut !En ASP, il y a un composant ki permet de créer une image sur le serveur,...on peu avec 2-3 ligne de codes, faire un dégradé, mettre du texte, e Insérer une image dans une autre [ par cduf ] Je sais créer une image (compteur) avec des commandes php GD, mais comment l'insérer dans une autre (bannière). Merci de m'aider.Email : cdufetelle@wa envoyer une image dans le $message de mail() [ par linov ] Bonjour,Comment faire pour envoyer une image dans le $message envoyé par la fonction mail() ?Syntaxe ? Paramètres ? Est-ce possible ?Merci de votre ai include image [ par erich10 ] comment faire un include d'une image ?et comment faire en plus un lien sur cette image?merci générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave MySQL et images [ par Marneus Calgar ] SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un MySQL et images [ par Marneus Calgar ] SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un Ne pas afficher la barre de Menu Image [ par microdav ] Bonjour à vous Internaute,je vous soumets une petite question...Je recherche Code permettant de ne pas faire afficher la barre de menu "Image" sur une


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales