- Home
- Categorie
- Coding e Sistemistica
- PHP
- Upload file e ridimensionamento automatico
-
Upload file e ridimensionamento automatico
Ciao a tutti, ho questa funzione che provvede a fare l'upload:
[php]
function uploadImage($filecontrol,$linkback) {
$est=strtolower(substr($_FILES[''.$filecontrol]['name'],-3,3));
if ($est!="") {
if ($est=="jpg" || $est=="gif") {
if (isset($_FILES[''.$filecontrol]) && is_uploaded_file($_FILES[''.$filecontrol]['tmp_name'])) // NUOVA IMMAGINE
{
if (move_uploaded_file($_FILES[''.$filecontrol]['tmp_name'], $_SESSION['PathUpload'].$_FILES[''.$filecontrol]['name'])==FALSE)
{
if($_FILES[''.$filecontrol]['error']==2) {
redirect_rel($linkback);
exit();
} else {
redirect_rel($linkback);
exit();
}
} else {
$random= randomKey("",8);
$valo=Filesave(0,$random,$est,2);
}
if ($valo>0) {
if(!rename($_SESSION['PathUpload'].$_FILES[''.$filecontrol]['name'],$SESSION['PathUpload'].$valo."".$random.".".$est ))
$logo=0;
else
$logo=$valo;
}
}
}
if ($logo=="" || $logo<0) $logo=0;
} else {
$logo=0;
}return $logo;
}
[/php]Ho poi trovato una funzione che riceve in ingresso il path del file da ridimensionare,_l'altezza e la larghezza massimi, ridimensiona in automatico affinchè non vengano superati i limiti massimi senza stretchare l'immagine stessa e infine salva il file ridimensionato nella posizione desiderata.[php]
include("classe_resize.php");
$resize = new resize;
$resize->urlimage = "folder/immagine.jpg";
$resize->fisso = 0;
$resize->maxX = 300;
$resize->maxY = 150;
$resize->latofisso = "XY";
$resize->folder = "public/img/";
$resize->newName = "nuovonome.jpg";
$resize->go();
[/php]Il problema è che non ho mai fatto upload di file, quindi non riesco a capire esattamente qual è il punto in cui il file viene mosso dalla directory temporanea alla directory finale. Se riuscissi a ridimensionare il file direttamente durante questo passaggio sarebbe perfetto...ma non ci riesco.:bho:Mi dareste una mano?
PS: a un certo punto c'è la funzione filesave. Questa ha solo il compito di memorizzare in una tabella del database il nome del file, l'estensione ed un random che viene poi accodato alla fine dell'id del file durante le varie chiamate successive).
-
[PHP]
<?php require_once('Connections/image.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")&& ($_FILES['new_image'])) {
$insertSQL = sprintf("INSERT INTO immage (luogo, titolo, image_orig, image_small) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['luogo'], "text"),
GetSQLValueString($_POST['titolo'], "text"),
GetSQLValueString($_FILES['new_image']['name'], "text"),
GetSQLValueString($_FILES['new_image'] ['name'], "text"));
mysql_select_db($database_image, $image);
$Result1 = mysql_query($insertSQL, $image) or die(mysql_error());
}
?><form name="form1" action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" id="something" class="uniForm">
<input name="new_image" id="new_image" size="30" type="file" class="fileUpload" />
<button name="submit" type="submit" class="submitButton">Upload/Resize Image</button>
<p> </p>
<p>
<label>
<input name="luogo" type="text" id="luogo" />
</label>
</p>
<p>
<label>
<input name="titolo" type="text" id="titolo" />
</label>
</p>
<p> </p>
<input type="hidden" name="MM_insert" value="form1">
</form>
<?php
if(isset($_POST['submit'])&& $_FILES['new_image']){
if (isset ($_FILES['new_image'])){
$imagename = $_FILES['new_image']['name'];
$source = $_FILES['new_image']['tmp_name'];
$target = "images/".$imagename;
move_uploaded_file($source, $target);$imagepath = $imagename; $save = "images_resize/150_" . $imagepath; //This is the new file you saving $file = "images/" . $imagepath; //This is the original file list($width, $height) = getimagesize($file) ; $modwidth = 150; $diff = $width / $modwidth; $modheight = $height / $diff; $tn = imagecreatetruecolor($modwidth, $modheight) ; $image = imagecreatefromjpeg($file) ; imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; imagejpeg($tn, $save, 100) ; $save = "images_resize/" . $imagepath; //This is the new file you saving $file = "images/" . $imagepath; //This is the original file list($width, $height) = getimagesize($file) ; $modwidth = 80; $diff = $width / $modwidth; $modheight = $height / $diff; $tn = imagecreatetruecolor($modwidth, $modheight) ; $image = imagecreatefromjpeg($file) ; imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; imagejpeg($tn, $save, 100) ; } }
?>
[/PHP]tratto da dreamweaver pero' modificabile come vuoi..
-
Intanto grazie mille per la disponibilità.
Il problema è che però quella funzione già gira su un sito e vorrei modificare proprio quella per evitare incasinamenti vari che potrebbero derivare rivoluzionando tutto...:x[...]