8791 sujets

Développement web côté serveur, CMS

Hello le monde d'alsacréationS (avec "S" ^^)

J'ai, grâce a vous, pu réalisé un script qui me permettais de trouvé la largeur des images qui était stocké dans un dossier et une fois additionné je pouvais l'utilisé pour agrandir mon div à la somme de toutes les largeurs des images. Je pouvais également affiché la suite des images dynamiquement.

Mais voila que mon employeur me demande d'intégrer de la vidéo... du coup je voudrais sollicité votre connaissance pour m'orienter dans la bonne direction.

Voici les problème qui me vienne:
- Comment obtenir la largeur en pixel d'une vidéo ?
- Comment faire que le nom de mon fichier vidéo ne s'intègre pas a une balise <img src="" ... /> mais dans un <object> préformaté.

Voici mon code qui récupère la somme de la largeur total de mes images stockées sur mon ftp:


	$rep = "../images/images_graphisme/";
	$dir = opendir($rep);
	$maxtop = 30;

	while ($lectureDuDossier = readdir($dir)){ // lecture et tri par date de création
	
		for($k=1;$k<=$maxtop;$k++){
			
	         if($lectureDuDossier > $mesimages[$k][1]) {
	         	
	            $s0 = $lectureDuDossier ; $u0 = $lectureDuDossier;
	            
	            for($kk = 1;$kk<=$maxtop;$kk++) {
	               $s = $mesimages[$kk][1] ; $u = $mesimages[$kk][2];
	               $mesimages[$kk][1] = $s0 ; $mesimages[$kk][2] = $u0;
	               $s0 = $s ; $u0 = $u;
	            }//for
	            break;
	            
	        }//if	         
		}//for
	}//while
	
	closedir($dir);
	
	for($i=1;$i<=$maxtop;$i++) {
		$monimage = $rep.$mesimages[$i][2];
		$image = $monimage;
	
		$taille = getimagesize($image);
		$largeur=$taille[0];
		$hauteur=$taille[1];
						
		$largeurtot += $largeur;
	}



Et j'insère ma variable $largeurtot dans mon css

#ilo{
	height:440px;
	left:0;
	top:0;
	width: <?php echo($largeurtot.'px'); ?>;
}


L'intégration des images dans mon code se fait de cette manière:


					function listDirs($Current_Path = '../images/images_graphisme/') {
						$dirs_in_dir = array();
						$files_in_dir = array();

						if ($handle = opendir($Current_Path)) {
							while (false !== ($file = readdir($handle))) {
								if ($file != "." && $file != "..") {
									$path = $Current_Path.'/'.$file;
									if (is_dir($path)) {
										$dirs_in_dir[]=$path;
									} else {
										$files_in_dir[]=$file;
									}
								}
							}
						}

						closedir($handle);
						$nb_files = count($files_in_dir) > 0;
						$nb_dirs  = count($dirs_in_dir) > 0;
						if($nb_files || $nb_dirs) {
							echo '<ul>'."\n";
							// Si des fichiers existent...
							if($nb_files) {
								foreach ($files_in_dir as $file) {
									$pathinfo = pathinfo($file);
									if ($pathinfo['extension'] == $extension) {
										$href = $Current_Path.'/'.$file;
										echo '<img src="d'.$href.'" />';
									} else {
										echo '<img src="'.$Current_Path.$file.'" />';
									}
								}
							}

							// Si des dossiers existent...
							if($nb_dirs) {
							// Tri inverse
								rsort($dirs_in_dir);
								foreach ($dirs_in_dir as $dir) {
									echo '<img src="'.$Current_Path.substr(strrchr($dir, "/"), 1).'" />';
									listDirs($dir);
								}
							}
						}
					}

					listDirs(); 
					//listDirs('repert');
					//listDirs('repert1/repert2');
					//listDirs('repert1/repert2', 'ext');
				


En passant: merci alsacréations pour l'aide que vous m'aviez apporté dans la créations/utilisation de ce script!

Je ne sais pas bien par ou commencer... J'ai pensé faire un teste sur le fichier qu'il voyait et puis changer le "echo" qui intègre l'image ou la vidéo dans le code html.

Mais ca ne règlerait pas le problème de la largeur de la vidéo pour que mon css soit toujours a jour.

Avez-vous une idée comment syntaxer ce nouvel ajout ?

Si vous avez des questions je reste a votre disposition.

Merci d'avance pour votre travail et de votre aide future !

Charly
Modifié par Chum (17 Aug 2010 - 14:36)
Coucou Heyoan !

Merci d'avoir pris du temps pour me répondre autant vite !

Je voulais ne pas passer par flash car le site doit-être regardé sur un ipad/iphone.
C'est pour cela que je voulais trouver une autre solution pour intégrer des vidéos et images.

Que pense tu d'un teste sur le fichier que le script est en train de traiter dans la boucle.
Suivant si c'est un mp4 intègre le dans un <object>...</object> sinon dans un <img src="" ... />.

Mais ca ne règle pas mon problème de la largeur des vidéos. Est-ce que l'on pourrait nommer la vidéo du genre "mavideo_400.mp4" et récupérer le "400" qui est sa taille ?

Au plaisir de vous lire

CHarly
Chum a écrit :
Je voulais ne pas passer par flash car le site doit-être regardé sur un ipad/iphone.
Ah OK... du coup le getimagesize ne va effectivement pas fonctionner.

Chum a écrit :
Que pense tu d'un teste sur le fichier que le script est en train de traiter dans la boucle.
Suivant si c'est un mp4 intègre le dans un <object>...</object> sinon dans un <img src="" ... />.
Yep.

Chum a écrit :
Est-ce que l'on pourrait nommer la vidéo du genre "mavideo_400.mp4" et récupérer le "400" qui est sa taille ?
Yep again ! Cela implique de faire saisir la largeur au moment de l'upload et de la rajouter dans le nom du fichier... et pour la récupérer une petite regexp. Smiley cligne
Décidément heyoan a du être croisé avec un gêne de lucky luck !

Merci pour ta réponse !

J'ai commencé un code pour la largeur des vidéos:

for($i=1;$i<=$maxtop;$i++) {
		$monimage = $rep.$mesimages[$i][2];
		$image = $monimage;
		
		$string = '400';
		if(stristr($string, $monimage) != FALSE) {
			echo $image;
	    	$larg_video = substr($image, 8, 3);
	    	
		}


le seul problème c'est que ca ne m'affiche rien... est-ce un problème avec php 5.3.0 ?
(comme avec ereg/eregi)

Je sais que c'est mon if qui coince mais je n'arrive pas a voir ou...

Si je fais un echo de la variable $image j'obtiens belle et bien le nom de mon fichier:
Ex. d'un echo de $image: "../images/images_graphisme/proposition_site_ngt_flyers_400.mp4"

Est-ce que vous voyez l'erreur ?

Merci beaucoup !

Charly
Chum a écrit :
Décidément heyoan a du être croisé avec un gêne de lucky luck !
C'est mon papa ! Smiley langue

Sinon désolé mais je ne comprends rien à ton code.

A tester :
$image = '../images/images_graphisme/proposition_site_ngt_flyers_400.mp4';
$pathinfo = pathinfo($image); 
$extension = $pathinfo['extension'];
$largeur = intval(substr(strrchr($pathinfo['filename'], '_'), 1));
echo '<p>extension : <strong>'.$extension.'</strong> / largeur : <strong>'.$largeur.'</strong></p>';
Nikel chrome tout fonctionne bien !

En tout cas merci Heyoan !

Je dois dire que ton code m'a pris quelques temps avec la doc php pour comprendre ! Mais maintenant tout marche et j'ai appris des truc !

Thanks a lot !

merci mille fois !

Donc du coup pour ceux qui serait intéressé pour trouver un script qui recherche la largeur des images + fichier contenant la largeur dans leur noms pour intégrer la somme dans une variable c'est par ici :

$rep = "../images/images_graphisme/";
	$dir = opendir($rep);
	$maxtop = 30;

	while ($lectureDuDossier = readdir($dir)){ // lecture et tri par date de création
	
		for($k=1;$k<=$maxtop;$k++){
			
	         if($lectureDuDossier > $mesimages[$k][1]) {
	         	
	            $s0 = $lectureDuDossier ; $u0 = $lectureDuDossier;
	            
	            for($kk = 1;$kk<=$maxtop;$kk++) {
	               $s = $mesimages[$kk][1] ; $u = $mesimages[$kk][2];
	               $mesimages[$kk][1] = $s0 ; $mesimages[$kk][2] = $u0;
	               $s0 = $s ; $u0 = $u;
	            }//for
	            break;
	            
	        }//if	         
		}//for
	}//while
	
	closedir($dir);
	
	for($i=1;$i<=$maxtop;$i++) {
		$monimage = $rep.$mesimages[$i][2];
		$image = $monimage;
		
		$pathinfo = pathinfo($image);  
		$extension = $pathinfo['extension']; 
		$largeurmp4 = intval(substr(strrchr($pathinfo['filename'], '_'), 1)); 
		echo '<p>extension : <strong>'.$extension.'</strong> / largeur : <strong>'.$largeurmp4.'</strong></p>';
		
		$taille = getimagesize($image);
		$largeur=$taille[0];
		$hauteur=$taille[1];
						
		$largeurtot += ($largeur += $largeurmp4);
	}


Pour ceux qui veulent intégrer des images dans un fichiers sur ftp (img/video) sur leur site:


function listDirs($Current_Path = '../images/images_graphisme/') {
						$dirs_in_dir = array();
						$files_in_dir = array();

						if ($handle = opendir($Current_Path)) {
							while (false !== ($file = readdir($handle))) {
								if ($file != "." && $file != "..") {
									$path = $Current_Path.'/'.$file;
									if (is_dir($path)) {
										$dirs_in_dir[]=$path;
									} else {
										$files_in_dir[]=$file;
									}
								}
							}
						}

						closedir($handle);
						$nb_files = count($files_in_dir) > 0;
						$nb_dirs  = count($dirs_in_dir) > 0;
						if($nb_files || $nb_dirs) {
							echo '<ul>'."\n";
							// Si des fichiers existent...
							if($nb_files) {
								foreach ($files_in_dir as $file) {
									$pathinfo = pathinfo($file);
									if ($pathinfo['extension'] == $extension) {
										$href = $Current_Path.'/'.$file;
										echo '<img src="d'.$href.'" />';
									} else {
										if($pathinfo['extension'] == "mp4"){
											echo '
											
											<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="160" HEIGHT="440" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
												<PARAM name="SRC" VALUE="'.$Current_Path.$file.'">
												<PARAM name="AUTOPLAY" VALUE="true">
												<PARAM name="CONTROLLER" VALUE="false">
												<PARAM name="loop" VALUE="true">
												<EMBED SRC="'.$Current_Path.$file.'" WIDTH="'.$largeurmp4.'" HEIGHT="440" AUTOPLAY="true" CONTROLLER="false" PLUGINSPAGE="http://www.apple.com/quicktime/download/">
												</EMBED>
											</OBJECT>
											
											
											';
										}else{
											echo '<img src="'.$Current_Path.$file.'" />';
										}
									}
								}
							}

							// Si des dossiers existent...
							if($nb_dirs) {
							// Tri inverse
								rsort($dirs_in_dir);
								foreach ($dirs_in_dir as $dir) {
									echo '<img src="'.$Current_Path.substr(strrchr($dir, "/"), 1).'" />';
									listDirs($dir);
								}
							}
						}
					}

					listDirs();


Merci mille fois Alsacreations d'existé et de soutenir les développeurs qui ont du dormir lors des cours Smiley lol (non pas que c'est forcement mon cas... hein ^^)

Charly