Browse Source

Ajout de preview

Ajout des preview pour les images de type jpg
Clement83 1 year ago
parent
commit
427c6597de
5 changed files with 638 additions and 567 deletions
  1. 2 1
      lang/en - English
  2. 2 1
      lang/fr - Francais
  3. 572 563
      php/action.php
  4. 6 0
      php/config.php
  5. 56 2
      php/function.php

+ 2 - 1
lang/en - English

@@ -93,4 +93,5 @@ Le dossier de stockage des donnees "%" est inaccessible en ecriture, verifiez qu
 Le dossier de stockage des donnees "%" est accessible en ecriture[::->]The data folder "[%%]" is writtable
 Champs obligatoires non remplis[::->]Main fields are empty
  - Taille maximale par fichier : %.[::->] - Max size per file : <span class="blue">[%%]</span>.
-Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Error, file/folder's name can't contain follow characters : /,\,:,?,",<,>
+Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Error, file/folder's name can't contain follow characters : /,\,:,?,",<,>
+une erreur est arrivee : [::->]an error occured: 

+ 2 - 1
lang/fr - Francais

@@ -92,4 +92,5 @@ Le dossier de stockage des donnees "%" est inaccessible en ecriture, verifiez qu
 Le dossier de stockage des donnees "%" est accessible en ecriture[::->]Le dossier de stockage des donn&eacute;es "[%%]" est accessible en &eacute;criture
 Champs obligatoires non remplis[::->]Champs obligatoires non remplis
  - Taille maximale par fichier : %.[::->] - Taille maximale par fichier : <span class="blue">[%%]</span>.
-Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Erreur, un nom de fichier/dossier ne peux contenir les caractères suivants : /,\,:,?,",<,>
+Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Erreur, un nom de fichier/dossier ne peux contenir les caractères suivants : /,\,:,?,",<,>
+une erreur est arrivee : [::->]une erreur est arrivee : 

File diff suppressed because it is too large
+ 572 - 563
php/action.php


+ 6 - 0
php/config.php

@@ -38,6 +38,12 @@ define('SECURE_DELIMITER_BEGIN','<?php /*'); //
 define('SECURE_DELIMITER_END','*/ ?>'); //
 define('LEFT_HASH','-1é&@shs--'); //
 define('RIGHT_HASH','$^^/!+£'); //
+
+define('PREVIEW_IMAGE_ENABLED', true);//Activer les previews image
+define('CACHE_FOLDER', 'cache/');//path vers le cache des images
+define('PREVIEW_WIDTH', 200);//Width max 
+define('PREVIEW_HEIGHT', 200);//height max 
+
 define('DC_VERSION','2'); //Version du programme
 define('DC_NAME','Stable');//Nom du programme
 define('DC_VERSION_NUMBER','2.0.0');//Nom du programme

+ 56 - 2
php/function.php

@@ -54,13 +54,17 @@ function scanFolder($folder){
 				$mtime = filemtime ($folder.$file);
 				$fileArray['mtimeDate'] = date('d/m/Y',$mtime);
 				$fileArray['mtimeHour'] = date('h\hi\m',$mtime);
+
+				if(PREVIEW_IMAGE_ENABLED === true) {
+					$source = str_replace(UPLOAD_FOLDER, '', $fileArray['url']);
+					$fileArray['previewPath'] = resizeImage($source, PREVIEW_WIDTH, PREVIEW_HEIGHT);
+				}
 				$realFiles[]=$fileArray;
+
 				unset($fileArray);
 			}
 		}else{
 			if(!in_array($folder.$file, $noFolders) && ( !DISPLAY_AVATAR_FOLDER && realpath($folder.$file)!=realpath('../'.AVATARFOLDER)) ){
-
-				
 				$fileArray['type'] = 'folder';
 				$fileArray['name'] = utf8_encode($file);
 				$fileArray['shortname'] =utf8_encode(short($file,NAME_LIMIT,get_extension($file)));
@@ -81,7 +85,57 @@ function scanFolder($folder){
 	return $realFiles;
 }
 
+/**
+* Resize an image and keep the proportions
+* @author Allison Beckwith <allison@planetargon.com>
+* @param string $filename
+* @param integer $max_width
+* @param integer $max_height
+* @return image
+*/
+function resizeImage($filename, $max_width, $max_height)
+{
+	$source = '../' . UPLOAD_FOLDER . $filename; 
+	if(@exif_imagetype($source) === IMAGETYPE_JPEG) {
+		$dest = '../' . CACHE_FOLDER . $filename;
+		if(!file_exists($dest)) {
+			$destDir = explode('/', $dest); 
+			array_pop($destDir);
+			$destDir = implode('/', $destDir);
+			if(!file_exists($destDir)) {
+				mkdir($destDir , 0775, true);
+			}
+
+			list($orig_width, $orig_height) = getimagesize($source);
 
+			$width = $orig_width;
+			$height = $orig_height;
+
+			# taller
+			if ($height > $max_height) {
+				$width = ($max_height / $height) * $width;
+				$height = $max_height;
+			}
+
+			# wider
+			if ($width > $max_width) {
+				$height = ($max_width / $width) * $height;
+				$width = $max_width;
+			}
+
+			$image_p = imagecreatetruecolor($width, $height);
+
+			$image = imagecreatefromjpeg($source);
+
+			imagecopyresampled($image_p, $image, 0, 0, 0, 0, 
+											$width, $height, $orig_width, $orig_height);
+
+			imagejpeg($image_p, $dest);
+		}
+		return $dest;
+	}
+	return false;
+}
 
 
 /**