Redimensionare poza la upload

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Redimensionare poza la upload

Mesajde cadou » Vin Feb 07, 2014 11:36 pm

folosesc codul de upload poza pe site de mai jos dar nu reusesc sa fac cateva modificari:
1)Conditie ca poza sa nu fie mai mica de 500 x 600.
2)Redimensionare poza daca e mai mare de 500x600 sa o faca de 500x600. REDIMENSIONARE NU DECUPARE !!!
3)Cand cauta poza in calculator, sa afiseze doar pozele jpg, pentru ca doar acest tip de fisier accept
4)La succes de upload poza sa se insereze in baza de date numele pozei!

Cod: Selectaţi tot

<hr>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
#uploadframe { display:none; }
</style>

</head>
<body>

<form id="uploadform" action="/upload-poza-profil.php" method="post" enctype="multipart/form-data" target="uploadframe" onsubmit="uploadimg(this); return false">
<input type="file" id="myfile" name="myfile">
<input type="submit" value="Salveaza poza" />
<iframe id="uploadframe" name="uploadframe" src="/upload-poza-profil.php" width="8" height="8" scrolling="no" frameborder="0"></iframe>
</form>
<div id="showimg"> </div>
</body>
</html>
<hr>



<script type="text/javascript"><!--
function uploadimg(theform){
theform.submit();
setStatus("<br><img src=/imagini/stare-loading.gif> <font color=orange>Te rugam asteapta pana cand se incarca poza, poate dura pana la 1 - 2 minute maxim 5 minute in functie de viteza ta la internet!</font>", "showimg");
return false;
}
function doneloading(rezultat) {
rezultat = decodeURIComponent(rezultat.replace(/\+/g, " "));
document.getElementById('showimg').innerHTML = rezultat;
}
function setStatus(theStatus, theloc) {
var tag = document.getElementById(theloc);
if (tag) {
tag.innerHTML = '<b>'+ theStatus + "</b>";
}
}
--></script>


iar fisierul upload-poza-profil.php

Cod: Selectaţi tot

<?php session_start(); include('../conectare.php');
if(isset($_SESSION['nume']))
{
$savefolder = 'poza-profil';
$max_size = 99999;
$allowtype = array('jpg', 'jpeg');
$rezultat = '';
// Daca este primit din formular un fisier valid
if(isset($_FILES['myfile']))
{ // daca nu e selectat nici un fisier sa dea eroare
if($_FILES['myfile']['name'] == '')
{ $rezultat = '<img src=/imagini/stare-error.png> <font color=red>Alege o poza!</font>'; }

// daca e selectat fisieru, spor la incarcat
else if(strlen($_FILES['myfile']['name']) > 2)
{
if (isset($_FILES['myfile'])) {
// Verifica daca fisierul are tipul de extensie permis
$type = end(explode(".", strtolower($_FILES['myfile']['name'])));
if (in_array($type, $allowtype)) {
// Verifica daca fisierul are marimea permisa
if ($_FILES['myfile']['size']<=$max_size*1000) {
     // Daca nu sunt erori in procesul de copiere
     if ($_FILES['myfile']['error'] == 0) {
     // Seteaza locatia si numele pt. incarcare pe server
$id = $_SESSION['id'];
$folder = 'poza-profil/';
$thefile = $folder . $id. '.'. $type;
     // Daca fisierul nu poate fi incarcat, returneaza mesaj
     if (!move_uploaded_file ($_FILES['myfile']['tmp_name'], $thefile)) {
         $rezultat = '<img src=/imagini/stare-error.png>
Sa intamplat ceva, nu stiu ce este, revin-o peste cateva minute pentru a
schimba poza de profil! Daca problema persista contacteaza-ne!';
     }
     else {
         // Returneaza succes
$rezultat = '<img src="/imagini/stare-succes.png">
<font color=green>Poza ta de profil a fost incarcata cu succes, in cateva
minute va aparea pe site, daca nu apare in maxim 5 minute, contacteaza-ne!
</font>';
     }
     }
}
}
else { $rezultat = '
<br><font color=red> <img src=/imagini/stare-error.png>
Fisierul <font color=blue>'. $_FILES['myfile']['name']. '</font>
nu are tipul de extensie permis, se accepta doar format .jpg</font>'; }
}
}

}

}
// daca e delogat sa dea eroare //
else
{
$rezultat = '<img src=/imagini/stare-error.png> <font color=red>Pentru a schimba poza de profil trebuie sa fi logat pe site</font>';
}
// Codeaza cu 'urlencode()' variabila $rezultat si o returneaza in 'onload', intr-un tag BODY
$rezultat = urlencode($rezultat);
echo '<body onload="parent.doneloading(\''.$rezultat.'\')"></body>';
?>



Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Re: Redimensionare poza la upload

Mesajde ispas » Sâm Feb 08, 2014 11:44 am

Salut, iti pot arata un exemplu in php :


Cod: Selectaţi tot

<html>
<head><title>Exemplu upload</title></head>
<body>
<center>
<b>Trimitere poza</b>
<br />
Conditii  : poza sa nu fie mai mica de 500px latime si 600 inaltime;
<br />
In cazul in care este, o redimensionam
<br />- -<br >
Alegem poza:
<br /><br />
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file"  accept="image/jpeg"/>
<br /><br />
<input type="submit" name="trimite" value="trimite"/>
</form>
</center>
<!-- AICI CODUL PHP -->
<?php
if(isset($_POST["trimite"]))
{//daca se cere formular;
if(isset($_FILES["file"]))
{//daca s-a trimis si formularul de poza;
//ne folosim de functia getimagesize pentru a lua dimensiunile pozei
$dimensiuni = getimagesize($_FILES['file']['tmp_name']);
$height = $dimensiuni[1];
$width  = $dimensiuni[0];
if($width<500 || $height<600)
{
echo "Poza este ma mica decat 500x600 px !";
}
else
{
//copiem imaginea, chiar daca este peste dimensiuni
if(move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".basename($_FILES["file"]["name"])))
{
if($width>500 || $height>600)
{
$new_images = "thumbnails_".$_FILES["file"]["name"];
$images = "upload/".basename($_FILES["file"]["name"]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor(500, 600);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, 500, 600, $photoX, $photoY);
//stergem prima poza,o adaugam pe cea noua
unlink("upload/".basename($_FILES["file"]["name"]));
ImageJPEG($images_fin,"upload/".basename($_FILES["file"]["name"]));
echo "Fotografie adaugata,si redimensionata !";
}
else
{
echo "Fotografie adaugata !";
}
//inseram in baza de date
mysql_query("INSERT INTO photos SET name='".basename($_FILES["file"]["name"])."'");
}
else
{
echo "Nu se poate copia !";
}
}
}
else
{
echo "Nu s-a completat";
}
}//submit
?>
</body>

Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Re: Redimensionare poza la upload

Mesajde ispas » Sâm Feb 08, 2014 11:46 am

Eu l-am scris mai repede, functioneaza ca l-am testat, atentie insa sa ai folder-ul "upload" cu permisiunile 777,sau modifici folder-ul daca ai tu un altul.
Daca mai intampini erori, lasi mesaj aici.

Desigur, s-ar putea face un array cu fisierele suportate, dar nu cred ca este nevoie { $suported = array("jpg","jpeg"); } .


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 35 vizitatori