Autor Zpráva
meca
Profil
Už tady nejspíše založim seriál 'Úskalí práce s obrázky v PHP', jelikož tu mam další kousek se kterým si nevím rady a který je asi z dílny George Lucase...

Při snažení uložit obrázek se změněnou velikostí užívám funkce imagecreatefromgif/jpeg/png a dál to házím do fce imagecopyresampled, ze které obrázek vyleze sic zmenšený, avšak černý, jednobarevně černý.

Zajímavé je, že když tuto funkci vynechám a z toho imagecreatefrom... to dám přímo do imagegif, tak vše funguje krásně; jen to není zmenšené...

Napadá vás něco? :-/
TFSi
Profil
meca
Napadá vás něco? :-/
Napadá: podělit se s námi o tvůj kód ...
meca
Profil
TFSi
Pochybuju, že to z toho někdo pozná... Je to beztak nějaká záhada, se kterou se ale prostě musel už někdy někdo setkat... Ale inu, máš ho mít:


$size = getimagesize($fileName);
$width = $size[0];
$height = $size[1];

$width = '80';
$height = round($size[1] * $width / $size[0]);

$image = imagecreatetruecolor($width, $height);
switch($size[2]) {
case 1:
// GIF
$srcImage = imagecreatefromgif($fileName);
break;
case 2:
// JPG
$srcImage = imagecreatefromjpeg($fileName);
break;
case 3:
// PNG
$srcImage = imagecreatefrompng($fileName);
break;
default:
$err.='<li>Obrázek musí být JPG, GIF nebo PNG.</li>';
break;
}


if (!imagecopyresampled($image, $srcImage, 0, 0, 0, 0, $width, $height, $owidth, $oheight))
{
$err.='<li>Obrázek nelze resamplovat.</li>';
}


if (!imagegif($image, '/home/pichacky/public_html/diskofil/imgprofil/' . $saveName, 100))
{
$err.='<li>Soubor s obrázkem se nepodařilo uložit.</li>';
}


A... $fileName=$_FILES["obrazek"]["tmp_name"] ...

A... jak jsem řikal, když vymažu imagecopyresampled a imagegif dám jako první parametr $srcImage, tak je to vše OK (jen se to samosebou nezmenší) ...
Alphard
Profil
if (!imagegif($image, '/home/pichacky/public_html/diskofil/imgprofil/' . $saveName, 100))
přebývá parametr

již jsem zde zveřejnil svoji funkčí funkci, podívej se tam pro inspiraci
http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=52742&foru m=9&page=-1
TFSi
Profil
meca
moc jsem to nezkoumal, ale nějak se mi tam nezdají ty rozměry. No a hlavně mi to taky hází černotu :)
Já používám něco obdobného, tak si zkus upravit to, protože to běží tak jak má:

  $filename = $_FILES['usr']['tmp_name'];


// Get dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$width = 80;
$height = 100;

// Resample
$image_p = imagecreatetruecolor($width, $height);
switch($_FILES['logo']['type']) {
case 'image/png': $image = imagecreatefrompng($filename); break;
case 'image/gif': $image = imagecreatefromgif($filename); break;
case 'image/jpeg': $image = imagecreatefromjpeg($filename); break;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagepng($image_p, 'images/'.$usr.'.png');
meca
Profil
Wo, hoho! Tak ti TFSi moc děkuji ;) Ač nechápu, v čem to bylo - prostě jsem tam zkoušel různě házet tvý věci do toho mého a různě to kombinovat a najednou se jen kouknu, jestli funguje ten swich, dám:


switch($size[2]) {
case 1:
$srcImage = imagecreatefromgif($fileName);
echo 'bla';
break;
(...)

A najednou to funguje :D
HGD
Profil
lidi POMOC, mě to dělá to samí a zaboha s tim nic nejde udělat :(
Mch81
Profil
Problem hledejte u allow_url_fopen musi byt ON. Aspon tak jsem vyresil problem ja

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: