Fix: Image function moved into correct file.

New: Add thumbs when uploading an image for third parties
This commit is contained in:
Laurent Destailleur 2011-02-07 14:23:57 +00:00
parent 23424e56ae
commit 34de815222
8 changed files with 73 additions and 78 deletions

View File

@ -82,11 +82,6 @@ if ($rowid)
$caneditfieldmember=$user->rights->adherent->creer; $caneditfieldmember=$user->rights->adherent->creer;
} }
// Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/* /*

View File

@ -80,11 +80,6 @@ if ($rowid)
$caneditfieldmember=$user->rights->adherent->creer; $caneditfieldmember=$user->rights->adherent->creer;
} }
// Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/* /*

View File

@ -38,11 +38,6 @@ $langs->load("companies");
if (!$user->admin) if (!$user->admin)
accessforbidden(); accessforbidden();
// Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/* /*
* Actions * Actions

View File

@ -164,7 +164,7 @@ function dol_compare_file($a, $b)
* Return mime type of a file * Return mime type of a file
* @param file Filename we looking for MIME type * @param file Filename we looking for MIME type
* @param default Default mime type if extension not found in known list * @param default Default mime type if extension not found in known list
* @param mode 0=Return short mime, 1=otherwise full mime string, 2=image for mime, 3=source language * @param mode 0=Return full mime, 1=otherwise short mime string, 2=image for mime type, 3=source language
* @return string Return a mime type family * @return string Return a mime type family
* (text/xxx, application/xxx, image/xxx, audio, video, archive) * (text/xxx, application/xxx, image/xxx, audio, video, archive)
*/ */

View File

@ -741,37 +741,6 @@ function hexbin($hexa)
} }
/**
* \brief Return if a filename is file name of a supported image format
* \param file Filename
* \return int -1=Not image filename, 0=Image filename but format not supported by PHP, 1=Image filename with format supported
*/
function image_format_supported($file)
{
// Case filename is not a format image
if (! preg_match('/(\.gif|\.jpg|\.jpeg|\.png|\.bmp)$/i',$file,$reg)) return -1;
// Case filename is a format image but not supported by this PHP
$imgfonction='';
if (strtolower($reg[1]) == '.gif') $imgfonction = 'imagecreatefromgif';
if (strtolower($reg[1]) == '.png') $imgfonction = 'imagecreatefrompng';
if (strtolower($reg[1]) == '.jpg') $imgfonction = 'imagecreatefromjpeg';
if (strtolower($reg[1]) == '.jpeg') $imgfonction = 'imagecreatefromjpeg';
if (strtolower($reg[1]) == '.bmp') $imgfonction = 'imagecreatefromwbmp';
if ($imgfonction)
{
if (! function_exists($imgfonction))
{
// Fonctions de conversion non presente dans ce PHP
return 0;
}
}
// Filename is a format image and supported by this PHP
return 1;
}
/** /**
* \brief Retourne le numero de la semaine par rapport a une date * \brief Retourne le numero de la semaine par rapport a une date
* \param time Date au format 'timestamp' * \param time Date au format 'timestamp'

View File

@ -20,20 +20,55 @@
/** /**
* \file htdocs/lib/images.lib.php * \file htdocs/lib/images.lib.php
* \brief Ensemble de fonctions de base de traitement d'images * \brief Set of function for manipulating images
* \version $Id$ * \version $Id$
*/ */
// Define size of logo small and mini
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/** /**
* \brief Return size of image file on disk (Supported extensions are gif, jpg, png and bmp) * Return if a filename is file name of a supported image format
* \param $file Full path name of file * @param file Filename
* \return Array array('width'=>width, 'height'=>height) * @return int -1=Not image filename, 0=Image filename but format not supported by PHP, 1=Image filename with format supported
*/
function image_format_supported($file)
{
// Case filename is not a format image
if (! preg_match('/(\.gif|\.jpg|\.jpeg|\.png|\.bmp)$/i',$file,$reg)) return -1;
// Case filename is a format image but not supported by this PHP
$imgfonction='';
if (strtolower($reg[1]) == '.gif') $imgfonction = 'imagecreatefromgif';
if (strtolower($reg[1]) == '.png') $imgfonction = 'imagecreatefrompng';
if (strtolower($reg[1]) == '.jpg') $imgfonction = 'imagecreatefromjpeg';
if (strtolower($reg[1]) == '.jpeg') $imgfonction = 'imagecreatefromjpeg';
if (strtolower($reg[1]) == '.bmp') $imgfonction = 'imagecreatefromwbmp';
if ($imgfonction)
{
if (! function_exists($imgfonction))
{
// Fonctions de conversion non presente dans ce PHP
return 0;
}
}
// Filename is a format image and supported by this PHP
return 1;
}
/**
* Return size of image file on disk (Supported extensions are gif, jpg, png and bmp)
* @param $file Full path name of file
* @return Array array('width'=>width, 'height'=>height)
*/ */
function dol_getImageSize($file) function dol_getImageSize($file)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
$ret=array(); $ret=array();
if (image_format_supported($file) < 0) return $ret; if (image_format_supported($file) < 0) return $ret;
@ -50,14 +85,14 @@ function dol_getImageSize($file)
/** /**
* \brief Resize or crop an image file (Supported extensions are gif, jpg, png and bmp) * Resize or crop an image file (Supported extensions are gif, jpg, png and bmp)
* \param file Path of file to resize/crop * @param file Path of file to resize/crop
* \param mode 0=Resize, 1=Crop * @param mode 0=Resize, 1=Crop
* \param newWidth Largeur maximum que dois faire l'image destination (0=keep ratio) * @param newWidth Largeur maximum que dois faire l'image destination (0=keep ratio)
* \param newHeight Hauteur maximum que dois faire l'image destination (0=keep ratio) * @param newHeight Hauteur maximum que dois faire l'image destination (0=keep ratio)
* \param src_x Position of croping image in source image (not use if mode=0) * @param src_x Position of croping image in source image (not use if mode=0)
* \param src_y Position of croping image in source image (not use if mode=0) * @param src_y Position of croping image in source image (not use if mode=0)
* \return int File name if OK, error message if KO * @return int File name if OK, error message if KO
*/ */
function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x=0, $src_y=0) function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x=0, $src_y=0)
{ {
@ -250,15 +285,16 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x=0, $s
/** /**
* \brief Create 2 thumbnails from an image file: one small and one mini (Supported extensions are gif, jpg, png and bmp) * Create a thumbnail from an image file (Supported extensions are gif, jpg, png and bmp).
* \param file Chemin du fichier image a redimensionner * If file is myfile.jpg, new file may be myfile_small.jpg
* \param maxWidth Largeur maximum que dois faire la miniature (-1=unchanged, 160 par defaut) * @param file PAth of file to resize
* \param maxHeight Hauteur maximum que dois faire l'image (-1=unchanged, 120 par defaut) * @param maxWidth Largeur maximum que dois faire la miniature (-1=unchanged, 160 by default)
* \param extName Extension pour differencier le nom de la vignette * @param maxHeight Hauteur maximum que dois faire l'image (-1=unchanged, 120 by default)
* \param quality Quality of compression (0=worst, 100=best) * @param extName Extension to differenciate thumb file name
* \param targetformat New format of target (1,2,3,4 or 0 to keep old format) * @param quality Quality of compression (0=worst, 100=best)
* \return string Full path of thumb * @param outdir Directory where to store thumb
* \remarks With file=myfile.jpg -> myfile_small.jpg * @param targetformat New format of target (1,2,3,4 or 0 to keep old format)
* @return string Full path of thumb
*/ */
function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $quality=50, $outdir='thumbs', $targetformat=0) function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $quality=50, $outdir='thumbs', $targetformat=0)
{ {

View File

@ -29,6 +29,7 @@
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
$langs->load("companies"); $langs->load("companies");
@ -75,12 +76,22 @@ if ( $_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
$resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']);
if (is_numeric($resupload) && $resupload > 0) if (is_numeric($resupload) && $resupload > 0)
{ {
if (image_format_supported($upload_dir . "/" . $_FILES['userfile']['name']) == 1)
{
// Create small thumbs for company (Ratio is near 16/9)
// Used on logon for example
$imgThumbSmall = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthsmall, $maxheightsmall, '_small', $quality, "thumbs");
// Create mini thumbs for company (Ratio is near 16/9)
// Used on menu or for setup page for example
$imgThumbMini = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthmini, $maxheightmini, '_mini', $quality, "thumbs");
}
$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
} }
else else
{ {
$langs->load("errors"); $langs->load("errors");
if ($resupload < 0) // Unknown error if (is_numeric($resupload) && $resupload < 0) // Unknown error
{ {
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
} }

View File

@ -75,12 +75,6 @@ $langs->load("ldap");
$form = new Form($db); $form = new Form($db);
// Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/** /**
* Actions * Actions