begin process at 2012 05 27 21:36:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > GÉNÉRATION IMAGE DEPUIS SQL ET SAUVEGARDE VERS SQL AVEC PHP4

GÉNÉRATION IMAGE DEPUIS SQL ET SAUVEGARDE VERS SQL AVEC PHP4


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :image, sql, génération Niveau :Initié Date de création :19/08/2006 Date de mise à jour :06/12/2006 16:44:17 Vu / téléchargé :4 065 / 155

Auteur : broumbroum

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

 Description

Un code qui a beaucoup de valeur pour moi!

Source

  • <?php
  • /*!
  • @copyrights b23|prod:Tiana Bruno RAKOTOARIMANANA - 2004 (all rights reserved to author)
  • @author Tiana Bruno RAKOTOARIMANANANA
  • @date Sat Sep 18 15:41:32 CEST 2004 @612 /Internet Time/
  • @filename php_image.class.inc
  • */
  • if(!isset($classeImage)) {
  • $classeImage = 1;
  • require_once("php_tbl.class.inc.php");
  • /*!
  • @class Image
  • @abstract Elle va definir une image dont l'affichage est gere par la libraire GD de PHP. Les deux constructeurs permettent deux types de creation de l'image: depuis un fichier (generalement temporaire) et depuis une chaine binaire (venant generalement d'une base SQL)
  • Prise en charge du format JPEG UNIQUEMENT | SQL | Les Images sont stockees dans la table Image de la base SQL sous forme binaire.
  • @discussion this could be ported to an other data format like mp3, avi, etc.
  • */
  • define("MEMORY_LIMIT", @ini_get("memory_limit"));
  • if(!MEMORY_LIMIT) define("MEMORY_LIMIt", 20000000);
  • define ("JPEG_QUALITY", 100);
  • class Image {
  • var $img; // ressource image (GD2)
  • var $id; // dans la base SQL
  • var $file;
  • var $nom;
  • var $desc;
  • var $size; // en % format: $n OU en px: format:$nX."x".$nY
  • var $mime;
  • var $debug;
  • /** @constructor Image
  • @abstract constructeur libre
  • @param file file resource or null.
  • @param debug activate debug log
  • @param size preferred size
  • @discussion
  • */
  • function Image($debug = false, $file = null, $size="100") {
  • $this->debug = $debug;
  • $this->file = $file;
  • $this->mime = null;
  • $this->size = $size;
  • if($this->debug) error_reporting(E_ALL);
  • else error_reporting(E_COMPILE_WARNING);
  • }
  • /* ----- partie privÈe ----- */
  • /** @param f resource fichier ou chemin String, si $this->file est accessible alors les données y seront lues
  • @return String|boolean données lues ou false */
  • function loadFile($f = null) {
  • trigger_error("Tentative d'ouverture du fichier $f ...", E_USER_NOTICE);
  • if(is_readable($f)) {
  • trigger_error("fichier lisible", E_USER_NOTICE);
  • $this->file = fopen($f, "rb");
  • if(!is_resource($this->file))
  • die("Lecture impossible!");
  • } else if (is_resource($f)){
  • $this->file = $f;
  • } else if (!is_resource($this->file))
  • return false;
  • $imagedata = '';
  • while(!feof($this->file)) {
  • trigger_error("[]",E_USER_NOTICE);;
  • $imagedata .= fgets($this->file, 4096);
  • }
  • fclose($this->file);
  • $this->file = null;
  • // image ressource
  • $this->loadBin($imagedata,$this->nom);
  • trigger_error("Fichier chargé!", E_USER_NOTICE);
  • return $imagedata;
  • }
  • function loadBin (&$string,$nom="") {
  • // init nom
  • if($nom == "")
  • $this->setNom("Image".time('U'));
  • else
  • $this->setNom($nom);
  • // init img
  • $this->img = imagecreatefromstring($string);
  • if(!is_resource($this->img))
  • $this->erreurJpeg();
  • trigger_error("Données chargées!", E_USER_NOTICE);;
  • return $this->img;
  • }
  • function erreurJpeg() {
  • // gestion d'erreur JPG: crÈer une image vide
  • $this->img = imagecreate(@$this->getWidth() + 64, @$this->getHeight() + 64); /* CrÈation d'une image blanche */
  • $bgc = imagecolorallocate($this->img, 255, 255, 255);
  • $tc = imagecolorallocate($this->img, 0, 0, 0);
  • imagefilledrectangle($this->img, 0, 0, 150, 30, $bgc);
  • // Affichage d'un message d'erreur
  • imagestring($this->img, 5, -3+$this->getWidth()/2 , -3+$this->getHeight()/2, "N/A", $tc);
  • }
  • /** @param f chemin vers le fichier où sera écrite l'image ou une chaine vide pour afficher sur l'output */
  • function paint($f = null) {
  • if(!is_resource($this->img)) {
  • trigger_error("Image::paint() hasn't found any image resource.", E_USER_WARNING);
  • return false;
  • }
  • if($f != null){
  • if(!is_resource($this->file = fopen($f, "wb")))
  • trigger_error("Image::paint($f) système inaccessible!", E_USER_ERROR);
  • fclose($this->file);
  • if(!is_writable($f)) {
  • if(!chmod($f, 0777))
  • trigger_error("Image::paint($f) protection en écriture détectée!", E_USER_ERROR);
  • }
  • } else header("Content-type: ".$this->mime);
  • switch($this->mime) {
  • case "image/wbmp":
  • return imagewbmp($this->img, $f);
  • case "image/jpeg":
  • case "image/jpg":
  • return imagejpeg($this->img, $f, JPEG_QUALITY);
  • break;
  • case "image/gif":
  • return imagegif($this->img, $f);
  • break;
  • case "image/png":
  • return imagepng($this->img, $f);
  • break;
  • default:
  • die ("Pas de support $this->mime sur cette page.");
  • break;
  • }
  • }
  • function getSize($im, $pw = null, $ph = null) {
  • $w = $pw; $h = $ph;
  • if(isset($pw)) $w = $pw;
  • if(isset($ph)) $h = $ph;
  • if(!isset($w) || $w == 0) $w = imagesx($im)/imagesy($im) * $h;
  • if(!isset($h) || $h == 0) $h = imagesy($im)/imagesx($im) * $w;
  • if($w == 0 && $h == 0) { $w = imagesx($im); $h = imagesy($im); }
  • return array($w,$h);
  • }
  • /* ----- partie publique ----- */
  • function setFile(&$file) {
  • $this->file =& $file;
  • }
  • function setNom($nom) {
  • $this->nom = $nom;
  • }
  • function setId($id) {
  • $this->id = $id;
  • }
  • function setDesc($desc) {
  • $this->desc = $desc;
  • }
  • function setSize($size="100") { // pour le zoom $size=int() et en px size=string(int()."x".int())
  • $this->size = $size;
  • }
  • /** @return HTML format width and height options */
  • function strSize() { // retourne un array(sizex[%;px],sizey[%;px])
  • if(!strrpos($this->size,'x')) // zoom (%)
  • return array("nX" => $this->size."%","nY" => $this->size."%");
  • else { // redimensionner (resample)
  • $nX = substr($this->size,0,strrpos($this->size,'x'));
  • $nY = substr($this->size,strrpos($this->size,'x')+1,strlen($this->size));
  • return array("nX" => $nX,"nY" => $nY);
  • }
  • }
  • function getWidth() {
  • if(!is_resource($this->img)) {
  • trigger_error("Image::getWidth() image has no resource.zero returned", E_USER_WARNING);
  • return 0;
  • }
  • $s = $this->getSize($this->img);
  • return $s[0];
  • }
  • function getHeight() {
  • if(!is_resource($this->img)) {
  • trigger_error("Image::getHeight() image has no resource.", E_USER_WARNING);
  • return 0;
  • }
  • $s = $this->getSize($this->img);
  • return $s[1];
  • }
  • function resize() {
  • if(is_resource($this->img)) {
  • if(isset($this->size)) {
  • $src = $this->img;
  • $width = imagesX($this->img);
  • $height = imagesY($this->img);
  • $size = $this->strSize();
  • $new_height = $size["nY"];
  • $new_width = $size["nX"];
  • if(strrpos($new_width,'%')) {
  • $new_width = (int) ($width * (substr($size["nX"], 0, -1)/100));
  • $new_height = (int) ($height * ($new_width/$width));
  • } else { // resizing to match square area of $size["nX"];$size["nY"], Aspect ratio preserved
  • if($width > $new_width) {
  • $new_height = (int) ($height * ($new_width/$width));
  • }
  • if($new_height > $size["nY"]) {
  • $new_width = (int) ($new_width * ($size["nY"] / $new_height));
  • $new_height = $size["nY"];
  • }
  • if($width < $new_width) {
  • if($height > $new_height)
  • $new_width = (int) ($width * ($new_height/$height));
  • }
  • }
  • $dst = imagecreatetruecolor($new_width,$new_height);
  • imagecolortransparent($dst, imagecolortransparent($src));
  • imagecopyresampled($dst,$src,0,0,0,0,$new_width,$new_height,$width,$height);
  • $this->img = $dst;
  • $this->setSize($new_width."x".$new_height);
  • return true;
  • }
  • }
  • else trigger_error("Image::resize() image has no resource.", E_USER_WARNING);
  • }
  • function setMime($mime) {
  • $this->mime = $mime;
  • }
  • function getExtension() {
  • if(!isset($this->mime)) trigger_error("Image::getExtension() No mime type defined!", E_USER_NOTICE);
  • return substr(strstr($this->mime, '/'), 1);
  • }
  • // wrapper loadFile
  • function loadFromFile($name = null) {
  • return $this->loadFile($name);
  • }
  • // wrapper loadBin()
  • function loadFromBinary(&$string,$nom="image") {
  • $this->loadBin($string,$nom="image");
  • }
  • // wrapper erreurJpeg
  • function loadError() { $this->setMime("image/jpeg"); $this->erreurJpeg(); }
  • /** @param mode 0 means GD resource to image tag,
  • 1 is standard output print,
  • 2 uses file resource to bring image tag
  • 3 zend_log image tag
  • @param link add a file link to image (needs write permissions)
  • @return boolean true or false*/
  • function afficher($mode=0, $link = null) { /*--- status:OK!!*/
  • if($mode==1){
  • // conversion de la sortie pour les images
  • mb_http_output("pass");
  • /* enclenchement de la bufferisation de sortie --output buffering--, fonction callback qui appelle la fonction de conversion avant l'envoi de la sortie au navigateur. Les entetes http ne sont pas affectÈs, ils sont envoyÈs ‡ leur apppel.*/
  • ob_start("mb_output_handler");
  • if(isset($this->file)) {
  • if(!isset($this->img))
  • $this->loadFile();
  • }
  • $this->resize();
  • ob_clean();
  • if(!$this->paint()) {
  • trigger_error("Image::afficher($mode) Erreur lors de l'affichage de l'image!", E_USER_WARNING);
  • return false;
  • }
  • ob_end_flush();
  • return true;
  • } else if($mode == 2) {
  • if(isset($this->file)) {
  • if(is_resource($this->file)) {
  • $this->loadFile();
  • }
  • else {
  • trigger_error("Image::afficher($mode) file has not found any resource.", E_USER_NOTICE);
  • return false;
  • }
  • } else {
  • trigger_error("Image::afficher($mode) no file set has been set.", E_USER_NOTICE);
  • return false;
  • }
  • } else if($mode == 3) {
  • // logo zend
  • $link = "zend_logo.png";
  • $this->img = zend_logo_guid();
  • $this->mime = "image/png";
  • }
  • if(is_null($link)) {
  • trigger_error("Image::afficher($mode) param link has to be set.", E_USER_ERROR);
  • return false;
  • }
  • if(!$this->paint($link)) return false;
  • echo HTML_image($link,array("javascript" => array('onClick' => "window.open('".$link."','b23::Open Window ^','width=this.width*4, height=this.height*4, status=no, directories=no, toolbar=no, location=no, menubar=no,scrollbars=no, resizable=yes'")));
  • return true;
  • }
  • /** @param mode 0 returns an table tag; 1 prints it to standard HTML output */
  • function afficherCadre ($mode=0, $desc=TRUE) {
  • $tbl = new Tableau (2,1, str_replace(" ", "_", $this->nom."(".$this->mime.")"));
  • $tbl->setOptionsArray(array("class" => "image"));
  • $tbl->setContenu_Cellule(0,0, "<center>".$this->afficher(0, $this->nom.".".$this->getExtension())."<center>");
  • if($desc)
  • $tbl->setContenu_Cellule(1,0, $this->nom." : ".$this->desc);
  • else
  • $tbl->setContenu_Cellule(1,0, "<center>".$this->nom."</center>");
  • if($mode == 0)
  • return $tbl->fin(1); // HTML
  • if($mode == 1)
  • $tbl->fin(); // to stdout
  • return true;
  • }
  • /* PRINCIPALES ---- fonctions vers/depuis la base SQL */
  • // wrappers
  • function ToSQL ($sql) {$this->saveToSQL($sql);}
  • function FromSQL($sql,$id) { $this->loadFromSQL($sql,$id); }
  • /** writes to SQL the picture content loaded
  • @return int id for fetching it */
  • function saveToSQL ($sql) {
  • if($this->img != null) {
  • trigger_error("tentative d'ouverture du fichier temporaire..", E_USER_NOTICE);
  • $f = tempnam("", "b23IOSQL_buffer");
  • $this->paint($f);
  • if(!$sql->query("INSERT INTO image (nom, image, description,mime) VALUES (\"".addslashes($this->nom)."\", \"\", \"".addslashes($this->desc)."\",\"".$this->mime."\")")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());
  • // init id
  • $this->setId(mysql_insert_id($sql->connexion));
  • $imagedata = file_get_contents($f);
  • if(!$imagedata)
  • die("Pas de données temporaires trouvées!\n");
  • // insertion du contenu de l'image
  • trigger_error("Tentative de stockage sur la BD...", E_USER_NOTICE);
  • //if(!$sql->query("UPDATE image SET image=LOAD_FILE('$this->file') WHERE id=$this->id")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());
  • if(!$sql->query("UPDATE image SET image=\"".addslashes($imagedata)."\" WHERE id=$this->id")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());
  • // retourner l'id de l'image ainsi stockÈe pour ne pas perdre sa trace
  • unlink($f);
  • trigger_error("OK! id: $this->id", E_USER_NOTICE);
  • return $this->id;
  • } else die ("image.class: ToSQL: Pas d'image chargée!!!");
  • }
  • /** reads from SQL the picture previously stored
  • @return true if succeeded or false and loads N/A error */
  • function loadFromSQL ($sql, $id) {
  • $image = $sql->query("SELECT * FROM image WHERE id = '$id'");
  • if($img = $sql->LigneSuivante_Array($image)) {
  • $nom = stripslashes($img['nom']);
  • $this->desc = stripslashes($img['description']);
  • $this->setId($id);
  • $this->loadBin(stripslashes($img['image']), $nom);
  • $this->mime = stripslashes($img["mime"]);
  • return true;
  • } else { // il n'y a pas d'image correspondant a id dans la table
  • $this->loadError();
  • return false;
  • }
  • }
  • function DeleteSQL ($sql, $id) {
  • if($sql->query("DELETE FROM image WHERE id = $id"))
  • return TRUE;
  • else return FALSE;
  • }
  • }
  • }
  • ?>
<?php



/*! 

@copyrights b23|prod:Tiana Bruno RAKOTOARIMANANA - 2004 (all rights reserved to author)

@author	Tiana Bruno RAKOTOARIMANANANA

@date	Sat Sep 18 15:41:32 CEST 2004 @612 /Internet Time/

@filename	php_image.class.inc

*/



if(!isset($classeImage)) {

	

	$classeImage = 1;

	require_once("php_tbl.class.inc.php");

	

	

	/*!

	@class Image

	@abstract   Elle va definir une image dont l'affichage est gere par la libraire GD de PHP. Les deux constructeurs permettent deux types de creation de l'image: depuis un fichier (generalement temporaire) et depuis une chaine binaire (venant generalement d'une base SQL)

	Prise en charge du format JPEG UNIQUEMENT | SQL | Les Images sont stockees dans la table Image de la base SQL sous forme binaire.

	@discussion this could be ported to an other data format like mp3, avi, etc.
	*/

	

	define("MEMORY_LIMIT", @ini_get("memory_limit"));

	if(!MEMORY_LIMIT) define("MEMORY_LIMIt", 20000000);

	define ("JPEG_QUALITY", 100);

	class Image {

		

		var $img; // ressource image (GD2)

		var $id; // dans la base SQL

		var $file;

		var $nom;

		var $desc;

		var $size; // en % format: $n OU en px: format:$nX."x".$nY

		var $mime;

		var $debug;

		

		/** @constructor Image

		@abstract constructeur libre

		@param file file resource or null.

		@param debug activate debug log

		@param size preferred size

		@discussion

		*/

		function Image($debug = false, $file = null, $size="100") {

			$this->debug = $debug;

			$this->file = $file;

			$this->mime = null;

			$this->size = $size;

			if($this->debug) error_reporting(E_ALL);

			else error_reporting(E_COMPILE_WARNING);

		}

		

		/* ----- partie privÈe ----- */

		/** @param f resource fichier ou chemin String, si $this->file est accessible alors les données y seront lues 

		@return String|boolean données lues ou false */

		function loadFile($f = null) {

			trigger_error("Tentative d'ouverture du fichier $f ...", E_USER_NOTICE);

			if(is_readable($f)) {

				trigger_error("fichier lisible", E_USER_NOTICE);

				$this->file = fopen($f, "rb");

				if(!is_resource($this->file))

					die("Lecture impossible!");

			} else if (is_resource($f)){

				$this->file = $f;

			} else if (!is_resource($this->file))

				return false;

			$imagedata = '';

			while(!feof($this->file)) {

				trigger_error("[]",E_USER_NOTICE);;

				$imagedata .= fgets($this->file, 4096);

			}

			fclose($this->file);

			$this->file = null;

			// image ressource

			$this->loadBin($imagedata,$this->nom);

			trigger_error("Fichier chargé!", E_USER_NOTICE);

			return $imagedata;

		}

		

		function loadBin (&$string,$nom="") {

			// init nom

			if($nom == "")

			$this->setNom("Image".time('U'));

			else

			$this->setNom($nom);

			// init img

			$this->img = imagecreatefromstring($string);

			

			if(!is_resource($this->img))

				$this->erreurJpeg();
			trigger_error("Données chargées!", E_USER_NOTICE);;

			return $this->img;

		}

		

		function erreurJpeg() {

			// gestion d'erreur JPG: crÈer une image vide

			$this->img = imagecreate(@$this->getWidth() + 64, @$this->getHeight() + 64); /* CrÈation d'une image blanche */

			$bgc = imagecolorallocate($this->img, 255, 255, 255);

			$tc = imagecolorallocate($this->img, 0, 0, 0);

			imagefilledrectangle($this->img, 0, 0, 150, 30, $bgc);

			// Affichage d'un message d'erreur

			imagestring($this->img, 5, -3+$this->getWidth()/2 , -3+$this->getHeight()/2, "N/A", $tc);

		}

		/** @param f chemin vers le fichier où sera écrite l'image ou une chaine vide pour afficher sur l'output */

		function paint($f = null) {			

			if(!is_resource($this->img)) {

				trigger_error("Image::paint() hasn't found any image resource.", E_USER_WARNING);

				return false;

			}

			if($f != null){ 

				if(!is_resource($this->file = fopen($f, "wb")))

					trigger_error("Image::paint($f) système inaccessible!", E_USER_ERROR);

				fclose($this->file);

				if(!is_writable($f)) {

					if(!chmod($f, 0777))

						trigger_error("Image::paint($f) protection en écriture détectée!", E_USER_ERROR); 

				}

			} else header("Content-type: ".$this->mime);

			switch($this->mime) {

				case "image/wbmp":

				return imagewbmp($this->img, $f);

				case "image/jpeg":

				case "image/jpg":

				return imagejpeg($this->img, $f, JPEG_QUALITY);

				break;

				case "image/gif":

				return imagegif($this->img, $f);

				break;

				case "image/png":

				return imagepng($this->img, $f);

				break;

				default:

				die ("Pas de support $this->mime sur cette page.");

				break;

			}

		}

		

		function getSize($im, $pw = null, $ph = null) {

			$w = $pw; $h = $ph;

			if(isset($pw)) $w = $pw;

			if(isset($ph)) $h = $ph;

			if(!isset($w) || $w == 0) $w = imagesx($im)/imagesy($im) * $h;

			if(!isset($h) || $h == 0) $h = imagesy($im)/imagesx($im) * $w;

			if($w == 0 && $h == 0) { $w = imagesx($im); $h = imagesy($im); }

			return array($w,$h);

		}

		/* ----- partie publique ----- */

		

		function setFile(&$file) {

			$this->file =& $file;

		}

		

		function setNom($nom) {
			$this->nom = $nom;
		}

		

		function setId($id) {

			$this->id = $id;

		}

		

		function setDesc($desc) {

			$this->desc = $desc;

		}

		

		function setSize($size="100") { // pour le zoom $size=int() et en px size=string(int()."x".int())

			$this->size = $size;	

		}

		

		/** @return HTML format width and height options */

		function strSize() { // retourne un array(sizex[%;px],sizey[%;px])

			if(!strrpos($this->size,'x')) // zoom (%)

			return array("nX" => $this->size."%","nY" => $this->size."%");

			else { // redimensionner (resample)

				$nX = substr($this->size,0,strrpos($this->size,'x'));

				$nY = substr($this->size,strrpos($this->size,'x')+1,strlen($this->size));

				return array("nX" => $nX,"nY" => $nY);

			}

		}



		function getWidth() {

			if(!is_resource($this->img)) {

				trigger_error("Image::getWidth() image has no resource.zero returned", E_USER_WARNING);

				return 0;

			}

			$s = $this->getSize($this->img);

			return $s[0];

		}

		

		function getHeight() {

			if(!is_resource($this->img)) {

				trigger_error("Image::getHeight() image has no resource.", E_USER_WARNING);

				return 0;

			}

			$s = $this->getSize($this->img);

			return $s[1];

		}

		

		function resize() {

			if(is_resource($this->img)) {

				if(isset($this->size)) {

					$src = $this->img;

					$width = imagesX($this->img);

					$height = imagesY($this->img);

					$size = $this->strSize();

					$new_height = $size["nY"];

					$new_width = $size["nX"];

					if(strrpos($new_width,'%')) {

						$new_width = (int) ($width * (substr($size["nX"], 0, -1)/100));

						$new_height = (int) ($height * ($new_width/$width)); 

					} else { // resizing to match square area of $size["nX"];$size["nY"], Aspect ratio preserved

						if($width > $new_width) {

							$new_height = (int) ($height * ($new_width/$width));

						}

						if($new_height > $size["nY"]) {

							$new_width = (int) ($new_width * ($size["nY"] / $new_height));

							$new_height = $size["nY"];

						}

						if($width < $new_width) {

							if($height > $new_height)

							$new_width = (int) ($width * ($new_height/$height));

						}

					}

					$dst = imagecreatetruecolor($new_width,$new_height);

					imagecolortransparent($dst, imagecolortransparent($src));

					imagecopyresampled($dst,$src,0,0,0,0,$new_width,$new_height,$width,$height);

					$this->img = $dst;

					$this->setSize($new_width."x".$new_height);

					return true;

				}

			}

			else trigger_error("Image::resize() image has no resource.", E_USER_WARNING);

		}

		

		function setMime($mime) {

			$this->mime = $mime;

		}

		

		function getExtension() {

			if(!isset($this->mime)) trigger_error("Image::getExtension() No mime type defined!", E_USER_NOTICE);

			return substr(strstr($this->mime, '/'), 1);

		}

		// wrapper loadFile

		function loadFromFile($name = null) {

			return $this->loadFile($name);

		}

		// wrapper loadBin()

		function loadFromBinary(&$string,$nom="image") {

			$this->loadBin($string,$nom="image");

		}

		

		// wrapper erreurJpeg

		function loadError() { $this->setMime("image/jpeg"); $this->erreurJpeg(); }

		

		/** @param mode 0 means GD resource to image tag, 

		1 is standard output print, 

		2 uses file resource to bring image tag

		3 zend_log image tag

		@param link add a file link to image (needs write permissions)

		@return boolean true or false*/

		function afficher($mode=0, $link = null) { /*--- status:OK!!*/

			if($mode==1){

				// conversion de la sortie pour les images

				mb_http_output("pass");

				/* enclenchement de la bufferisation de sortie --output buffering--, fonction callback qui appelle la fonction de conversion avant l'envoi de la sortie au navigateur. Les entetes http ne sont pas affectÈs, ils sont envoyÈs ‡ leur apppel.*/

				ob_start("mb_output_handler");

				

				if(isset($this->file)) {			

					if(!isset($this->img)) 

						$this->loadFile();

				}

				

				$this->resize();

				ob_clean();

				if(!$this->paint()) {

					trigger_error("Image::afficher($mode) Erreur lors de l'affichage de l'image!", E_USER_WARNING);

					return false;

				}

				ob_end_flush();   

				return true;

			} else if($mode == 2) {

				if(isset($this->file)) {

					if(is_resource($this->file)) {

						$this->loadFile();

					}

					else {

						trigger_error("Image::afficher($mode) file has not found any resource.", E_USER_NOTICE);

						return false;

					}

				} else { 

					trigger_error("Image::afficher($mode) no file set has been set.", E_USER_NOTICE); 

					return false;

				}

			} else if($mode == 3) {

				// logo zend

				$link = "zend_logo.png";

				$this->img = zend_logo_guid();

				$this->mime = "image/png";

			}

			if(is_null($link)) {

				trigger_error("Image::afficher($mode) param link has to be set.", E_USER_ERROR);

				return false;

			}

			if(!$this->paint($link)) return false;

			echo HTML_image($link,array("javascript" => array('onClick' => "window.open('".$link."','b23::Open Window ^','width=this.width*4, height=this.height*4, status=no, directories=no, toolbar=no, location=no, menubar=no,scrollbars=no, resizable=yes'")));

			return true;

		}

		

		/** @param mode 0 returns an table tag; 1 prints it to standard HTML output */

		function afficherCadre ($mode=0, $desc=TRUE) {

			$tbl = new Tableau (2,1, str_replace(" ", "_", $this->nom."(".$this->mime.")"));

			$tbl->setOptionsArray(array("class" => "image"));

			$tbl->setContenu_Cellule(0,0, "<center>".$this->afficher(0, $this->nom.".".$this->getExtension())."<center>");

			if($desc)

			$tbl->setContenu_Cellule(1,0, $this->nom." : ".$this->desc);

			else

			$tbl->setContenu_Cellule(1,0, "<center>".$this->nom."</center>");

			if($mode == 0)

			return $tbl->fin(1); // HTML

			if($mode == 1)

			$tbl->fin(); // to stdout

			return true;

		}

		

		/* PRINCIPALES ---- fonctions vers/depuis la base SQL */

		

		

		// wrappers

		function ToSQL ($sql) {$this->saveToSQL($sql);}

		function FromSQL($sql,$id) { $this->loadFromSQL($sql,$id); }

		

		/** writes to SQL the picture content loaded 

		@return int id for fetching it */

		function saveToSQL ($sql) {

			if($this->img != null) {

				trigger_error("tentative d'ouverture du fichier temporaire..", E_USER_NOTICE);

				$f = tempnam("", "b23IOSQL_buffer");

				$this->paint($f);

				

				if(!$sql->query("INSERT INTO image (nom, image, description,mime) VALUES (\"".addslashes($this->nom)."\", \"\", \"".addslashes($this->desc)."\",\"".$this->mime."\")")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());

				// init id

				$this->setId(mysql_insert_id($sql->connexion));

				$imagedata = file_get_contents($f);

				if(!$imagedata)

					die("Pas de données temporaires trouvées!\n");

				// insertion du contenu de l'image

				trigger_error("Tentative de stockage sur la BD...", E_USER_NOTICE);

				//if(!$sql->query("UPDATE image SET image=LOAD_FILE('$this->file') WHERE id=$this->id")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());

				if(!$sql->query("UPDATE image SET image=\"".addslashes($imagedata)."\" WHERE id=$this->id")) die("L'image n'a pas correctement ete stockee sur la base SQL: ".mysql_error());

				// retourner l'id de l'image ainsi stockÈe pour ne pas perdre sa trace

				unlink($f);

				trigger_error("OK! id: $this->id", E_USER_NOTICE);

				return $this->id;

			} else die ("image.class: ToSQL: Pas d'image chargée!!!");

		}

		

		/** reads from SQL the picture previously stored

		@return true if succeeded or false and loads N/A error */

		function loadFromSQL ($sql, $id) {

			$image = $sql->query("SELECT * FROM image WHERE id = '$id'");

			if($img = $sql->LigneSuivante_Array($image)) {

				$nom = stripslashes($img['nom']);

				$this->desc = stripslashes($img['description']);

				$this->setId($id);

				$this->loadBin(stripslashes($img['image']), $nom);

				$this->mime = stripslashes($img["mime"]);

				return true;

			} else { // il n'y a pas d'image correspondant a id dans la table                                                         

				$this->loadError();

				return false; 

			}

		}

		function DeleteSQL ($sql, $id) {

			if($sql->query("DELETE FROM image WHERE id = $id"))

			return TRUE;

			else return FALSE;

		}

	}

}

?>

 Conclusion

Le package complet est disponible sur http://www.sourceforge.net/projects/pohse .

 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


 Historique

19 août 2006 06:42:56 :
corrections personnelles
19 août 2006 06:46:45 :
corrections personnelles, commentaires inutiles supprimés
21 août 2006 04:52:24 :
adresse web du projet
06 septembre 2006 19:36:36 :
manque de respect de la liberté d'expression
06 décembre 2006 16:35:42 :
bug fix - final version
06 décembre 2006 16:36:38 :
bug fix - final version
06 décembre 2006 16:44:17 :
debug

 Sources du même auteur

PHPIMG RESIZER: CRÉATEURS D'IMAGES TOUS FORMATS POUR AFFICHE...

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29
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

Commentaires et avis

Commentaire de alpha386 le 20/08/2006 14:01:33

Salut

Pour la xème fois, je ne regarde pas si pas de zip.

Commentaire de Monkeymat le 21/08/2006 10:02:16

Te serait-il possible de faire un package complet et non différents petits fichiers zip, car c'est bien de donner l'adresse web du projet mais si on doit se tapper le DL des fichiers 1 par 1, c'est un lourd.

Commentaire de broumbroum le 21/08/2006 22:31:12

désolé, c'est ainsi. ;)

Commentaire de yurispy le 03/09/2006 19:35:30

ne t'attends pas alors a etre testé

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

PROBLEME AVEC SQL SERVER 2000 ET AVEC LES IMAGE [ par kenza_sana ] Bonjour je vous demande de m'aider car ma base de donnees contient des images et j'utilise SQL SERVER 2000 ...Le rpobleme c'est que quand j'ai mis dan url image sql [ par magicjim ] salut a tous comment fait ton pour afficher une image dans une page :dans ma table g le champs url (avec dedans l'adresse de l'image)et je voudrai sav Affichage d'une image avec nom dans bd [ par laubro ] Bonjour,je voudrais pouvoir afficher une image rang&#233;e dans un r&#233;pertoir (car stoqu&#233; en bd sais pas faire) en utilisant le nom de l'imag Génération dynamique d'image gif [ par spardo ] Bonjour Voil&#224;, je dois trouver un script qui puisse g&#233;n&#233;rer des images param&#232;trables comme changer la couleur, la police, la tail gallerie images uploadé avec infos images dans base sql [ par joebuz ] et oui c'est encore moi,voila les visiteurs deu site peuvent ajouter une image a eux avec le titre&nbsp; et une petite descriptionles images sont uplo Génération d'image personnalisé [ par franckdu92 ] Bonjour a tous.je suis débutant en php/html et j'ai besoin d'aide.voila, j'aimerais crée une page ou les visiteur pourrons généré une image personnali affichage d'une image [ par refkaben ] Bonjour,Je developpe un site ou les utilisateurs ont un formulaire, dans lequel il va donner le chemin d'une image, cette image sera uppload&#233;e, p delete image dans dossier et dans la table [ par speedylol ] Bonjour, j'ai un petite question toute b&#234;te comment r&#233;alise ton une suppression d'image dans la table et dans le ou les dossier image et min Gestion des images SQL PHP [ par Anus_hurlant ] Bonjour, Je d&#233;sire r&#233;aliser un site ou l'on peut visiter une galerie d'images stock&#233;es sur le serveur. Les clients pourront uploader de Création d'un tableau avec SQL ( je suis bloqué :( ) [ par alexlet ] Bonsoir à tous,Voila, je débute et je suis bloquer:Je veus afficher une requette mysql dans un tableau ( j'ai pas trouvé de sources pouvant m'aider su


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,733 sec (3)

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