Autor Zpráva
Rob
Profil
Ahoj,
potřebuju uploadnout obrázek a rovnou ho upravit.

Jedná se o gravatar, který má mít velikost 50x50px. Takže jsem to udělal takhle:

imagecopyresized($soubor, $_FILES["gravatar"]["tmp_name"], 0, 0, 0, 0, 50, 50, $obrazek[0], $obrazek[1]);

$soubor se nejdříve poskládá. Z cesty, id uživatele, jehož gravatar to má být a koncovky podle typu souboru. (to jsem kontroloval, to je v pořádku - po echo $soubor to vypise přesně co má)

$_FILES["gravatar"]["tmp_name"] je snad jasné

0, 0, 0, 0 taky

50, 50 jsou ty rozměry co potrebuju a $obrazek[0], $obrazek[1] načtu pomocí getimagesize().

Já tedy nevídím žádný problém, ale pořát to píše, že mám špatný argument...

Nevidíte někdo nějakou chybu??
koudi
Profil
Vidíme. Protože tam nemůžeš dát cestu k souboru, ale výsledek fce (třeba) imagecreatefromjpeg(cesta).
Anonymní
Profil *
Je to vytazek z jedne me funkce, takze si misto promennych dopln svoje udaje ... a melo by ti to fungovat.
	// vytvorime novy obrazek

$img_in = imagecreatefromjpeg($path . $img);

// barevny obrazek
$img_out = imagecreatetruecolor($width, $height);

// zkopirujeme novou velikost
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, $width, $height, $width_img, $height_img);

// ulozime
imagejpeg($img_out, $path . $prefix . $img);
Rob
Profil
Asi mi porad neco unika.

$dir = "./data/gravatar/";
$typ = $_FILES["gravatar"]["type"];

if ($typ == "image/jpeg") {
$soubor = imagecreatefromjpeg($dir.$_SESSION["uziv_id"].".jpg");
} elseif ($typ == "image/gif") {
$soubor = $dir.$_SESSION["uziv_id"].".gif";
} else {
$soubor = NULL;
$zpravag = "Můžete nahrát ikonku pouze ve formátu .jpg nebo .gif.";
}

$obrazek = getimagesize($_FILES["gravatar"]["tmp_name"]);

if (is_uploaded_file($_FILES["gravatar"]["tmp_name"]) AND $soubor != NULL) {
imagecopyresized($soubor, $x, 0, 0, 0, 0, 50, 50, $obrazek[0], $obrazek[1]);
}

Můžete to prosím poopravit, aby to delalo co ma.

Zkoušel jsem to i podle toho kódu výše, ale... jak říkám, asi mi uniká něco ohledně práce s obrázky vůbec.
Anonymní
Profil *
Mohlo by to snad fungovat ...
<?php


$width = 50;
$height = 50;
$dir = './data/gravatar/';

function image($file) {

global $width;
global $height;
global $dir;

$imagesize = getimagesize($file);

switch($imagesize[2]) {
case '1':
$img = imagecreatefromgif($file);
break;

case '2':
$img = imagecreatefromjpeg($file);
break;
}

if(!$img) {
return false;
}

$img2 = imagecreatetruecolor($width, $height);

imagecopyresized($soubor, $x, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);

if($imagesize[2] == 2) {
imagejpeg($img2, $dir . $_SESSION["uziv_id"] . 'jpg');
}
elseif($imagesize[2] == 1) {
imagetruecolortopalette($img2, false, 256);
imagegif($img2, $dir . $_SESSION["uziv_id"] . 'gif');
}
}

// pouziti
function($_FILES['gravatar']['tmp_name']);
?>
Anonymní
Profil *
oprava ...

// pouziti
function image($_FILES['gravatar']['tmp_name']);
Rob
Profil
OK, vyzkousim, pohraju si s tim... diky
kachnak
Profil *
zdravim prosim vas tato funkcia imagecopyresized ak zmensi obrazok tak je taky "kockaty" hranaty a ked zmensim obrazok v PC pomocou irfanview softu tak je ovela krajsi ako ked sa zmensi na servery s atributom kvality 100 ( imagejpeg($thumb,"$meno",100); )... neviete ako spravit aby bol aj ten na servery po zmenseni pekny ako cez soft v pc.. dakujem
kachnak
Profil *
ten na servery po zmenseni zabera ovela viac KB ako ten povodny vacsieho rozslisenia pred uploadom na net.. a i ked zabera viac kb je ovela skaredsi... :(
Toto téma je uzamčeno. Odpověď nelze zaslat.

0