Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]function.imagecreatetruecolor
Forum PHP.pl > Forum > Przedszkole
^(-.-)^
mam taki problem co sie dzieje na kazdym serwerze jako uzywam. Testowalem w darmowych serwerach kod php i za kazdym razem mi sie taki blad pokazuje.

Cytat
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/a8487159/public_html/resizejpeg.php on line 11


a kod php gdzie jest kod wyglada mniej wiecej taki
Kod
               8-list($width, $height) = getimagesize($file);
               9-$new_width = $sze;
               10-$new_height = $wys;
               11-$image_p = imagecreatetruecolor($new_width, $new_height);


czy ktos moze mi powiedziec o co chodzi z tym imagecreatetruecolor?questionmark.gif (znaczy czytalem cos na temat tego imagecreatetruecolor na stronie phpclasses i na stronie php.pl ale nadal nie jasne tongue.gif wiecie jak to naprawic?questionmark.gif

to raz. A 2 jest to ze pozniej jak chcialbym zapisac obrazek na kompie to zamiast zapisac tego obrazka np w formacie .jpeg to mi sie zapisuje jako php oO blinksmiley.gif nie za bardzo rozumiem. Folder gdzie obrazki sa pochowane nazywa sie upload i dalem chmod 777. a kod php do tego wyglada tak
Kod
         $data_obrazka = date('jmyhis');
         $katalog='upload/';
         $name = $katalog.$data_obrazka.'_'.$userfile_name;
         $dir = $userfile;
        
         if (move_uploaded_file($dir,$name)){
         echo('<img src="resizejpeg.php?file='.$name.'&jakosc=85&szerokosc='.$_POST['szerokosc'].'&wysokosc='.$_POST['wysokosc'].'">');


kolega mi powiedzial ze cos tam z biblioteka. Moze ktos tez mi wyjasni co i jak zeby bylo mozna zapisac obrazek na kompie??

Dziekuje bardzo biggrin.gif
nospor
Komunikat chyba dosc wyraźnie mowi, ze zapodajesz zle wymiary. Zapewne te wartosci są puste. Ciezko wyswietlic i sprawdzic co tam jest?
  1. <?php
  2. $new_width = $sze;
  3. $new_height = $wys;
  4. ?>

Co to jest te $sze i $wys? Skad to bierzesz? Najwyraźniej jest to zerem lub nie istnieje wogole. Sprawdz, przeanalizuj. Dupczenie przez echo to najlepsza metoda.
^(-.-)^
zapewniam cie ze istnieje smile.gif

Kod
    <input type="file" id="disc" name="userfile" size="50" style="height:21px; border-top:solid 1px #6F6F6F;">
      <p id="opcja">
      Szerokość: <input type="text" name="szerokosc" id="szerokosc" size="4" maxlenght="4" onclick="this.value=''" /> Wysokość:
      <input type="text" name="wysokosc" size="4" id="wysokosc" maxlenght="4" onclick="this.value=''" />

zapomnialem dac tego wyzej stad pytanie co to $sze i $wys


Kod
$file = $_GET['file'];
  $jakosc = $_GET['jakosc'];
  $sze = $_GET['szerokosc'];
  $wys = $_GET['wysokosc'];
  
  list($width, $height) = getimagesize($file);
  $new_width = $sze;
  $new_height = $wys;
  $image_p = imagecreatetruecolor($new_width, $new_height);


a wartosci dalem..
nospor
Cytat
zapewniam cie ze istnieje

A zrobiles echo $sze? Zrob prosze, bo zapewnienia poprzez pokazanie kawalka formularza nic nei znacza. Bardziej wiarygogny jest komunikat bledu niz twoj kod.

Nie pokazales jaką metodą wysylasz forma, czy post czy get, a skoro jest tam tez plik to powinno byc raczej post, czyli nie $_GET a $_POST i w formularzu trzeba powiedziec ze to ma isc postem.

Tak samo ten kod:
$file = $_GET['file'];
a w formie masz name="userfile" tongue.gif
Nastepnym razem wiec mnie nie zapewniaj a zrob oco prosze, czyli ECHO
^(-.-)^
Zrobilem echo $sze i zamiast pokazywac obrazek nic sie nie pokazalo.
tutaj masz stronke testowa.
http://ejsi.site40.net

sprobuj uploadowac zdjecie i dodaj wartosci szerokosc i wysokosc jaka chcesz... musza byc tam wartosci inczej nic z tego.. no i potem zobaczysz co dalej tongue.gif
nospor
no widzisz, czyli nic ci z forma nie pobiera...
ustawiles te $_POST jak prosilem? Bo widze ze form wysylasz postem.
bikerszymek
Tu masz dzialajaca funkcje, mialem podobny problem do Twojego ale teraz nie pamietam gdzie byl pies pogrzebany (wydaje mi sie ze podajesz zla sciezke do pliku)

CODE


function galeria($plik_tmp, $plik_nazwa)
{
$filename = 'images/galeria/' . basename($plik_nazwa);
$nazwa = '' . basename($plik_nazwa);

// upload na serwer
{
if(!file_exists($plik_nazwa))
{
if(is_uploaded_file($plik_tmp))
{
move_uploaded_file($plik_tmp, $filename);

$zrodlo=$filemane;

$obraz = @ imagecreatefromjpeg('images/galeria/' . basename($plik_nazwa)) or die("Nie udalo sie otworzyc strumienia");

list($aheight, $awidth) = getimagesize('images/galeria/' . basename($plik_nazwa)); // odczytywanie wielkosci obrazka

if ( $aheight > 800 || $awidth > 600 )

{
if ( $awidth/$aheight > $aheight/$awidth )
{
$nheight = 800;
$nwidth = floor($nheight * ($aheight / $awidth));
}
else
{
$nwidth = 800;
$nheight = floor($nwidth * ($awidth / $aheight));
}

$obraz2=imagecreatetruecolor($nwidth, $nheight);

$dx=0; $dy=0; $dw=$nwidth; $dh=$nheight;
imagecopyresampled($obraz2,$obraz,$dx,$dy,0,0,$dw,$dh,$aheight,$awidth);


$awidth = $nwidth;
$aheight = $nheight;

}
else
{
$nwidth = $awidth;
$nheight = $aheight;
}


if ( $nwidth/$nheight > $nheight/$nwidth )
{ // poziomo

$mwidth = 120;
$mheight = floor($mwidth * ($nheight / $nwidth));

$obraz_mini = imagecreatetruecolor($mwidth,$mheight);

$dx=0; $dy=0; $dw=$mwidth; $dh=$mheight;
imagecopyresampled($obraz_mini,$obraz2,$dx,$dy,0,0,$dw,$dh,$nwidth,$nheight);

}else
{ // pionowo

$mheight = 120;
$mwidth = floor($mheight * ($nwidth / $nheight));

$obraz_mini = imagecreatetruecolor($mwidth, $mheight);

$dx=0; $dy=0; $dw=$mwidth; $dh=$mheight;
imagecopyresampled($obraz_mini,$obraz2,$dx,$dy,0,0,$dw,$dh,$nwidth,$nheight);

}

$plik_nazwa = $katalog.'_'.rand(0,99999999).'.jpeg';
$nazwa = '' . basename($plik_nazwa);

// zapis
imagejpeg( $obraz2,'images/galeria/'.$katalog.'/'.$nazwa, 100 );
imagejpeg( $obraz_mini,'images/galeria/'.$katalog.'/mini/mini_'.$nazwa, 100 );

}
else
{
echo 'Problem: Plik nie moze byc skopiowany do katalogu';
exit;
}
}
else echo 'Plik o takiej nazwie istnieje';
}


CODE
$plik_tmp_1 = $_FILES['plik']['tmp_name'][0];
$plik_nazwa_1 = $_FILES['plik']['name'][0];


CODE
galeria($plik_tmp_1, $plik_nazwa_1);
^(-.-)^
Cytat
(wydaje mi sie ze podajesz zla sciezke do pliku)



Mam dobra sciezke smile.gif dam tutaj caly kod tego resizejpeg.php

  1. <?php
  2.  
  3. $file = $_GET['file'];
  4. $jakosc = $_GET['jakosc'];
  5. $sze = $_GET['szerokosc'];
  6. $wys = $_GET['wysokosc'];
  7.  
  8. list($width, $height) = getimagesize($file);
  9. $new_width = $sze;
  10. $new_height = $wys;
  11. $image_p = imagecreatetruecolor($new_width, $new_height);
  12.  
  13. echo $sze;
  14.  
  15. preg_match("|.([a-z0-9]{2,4})$|i", $file, $fileSuffix);
  16. switch(strtolower($fileSuffix[1]))
  17. {
  18. case "jpg"<span style="color: #007700":
  19. header('Content-typ: image/jpeg');
  20. $image = imagecreatefromjpeg($file);
  21. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  22. imagejpeg($image_p, null, $jakosc);
  23. break;
  24. case "png"<span style="color: #007700":
  25. header('Content-typ: image/png');
  26. $image = imagecreatefrompng($file);
  27. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  28. imagepng($image_p, null, $jakosc);
  29. break;
  30. case "gif"<span style="color: #007700":
  31. header('Content-typ: image/gif');
  32. $image = imagecreatefromgif($file);
  33. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  34. imagegif($image_p, null, $jakosc);
  35. }
  36. ?>


a do upload fotki: upload.php

  1. <?php
  2. include('resizejpeg.php');
  3.  
  4.    if($_POST['R1'] == "V1")
  5.     {
  6. // $userfile - miejsce tymczasowej lokalizacji pliku na serwerze WWW
  7. $userfile = $_FILES['userfile']['tmp_name'];
  8.  
  9. // $userfile_name - nazwa pliku w systemie uzytkownika
  10. $userfile_name = $_FILES['userfile']['name'];
  11.  
  12. // $userfile_size - wielkosc pliku w bajtach
  13. $userfile_size = $_FILES['userfile']['size'];
  14.  
  15. // $userfile_type - typ pliku w systemie MIME, np. image/gif
  16. $userfile_type = $_FILES['userfile']['type'];
  17.  
  18. // $userfile_error - kod bledu zwiazanego z wysylaniem pliku
  19. $userfile_error = $_FILES['userfile']['error'];  
  20.  
  21. if($userfile_error == UPLOAD_ERR_OK){  
  22. if ($userfile_type != 'image/jpeg' &&
  23. $userfile_type != 'image/png' &&
  24. $userfile_type != 'image/bmp' &&            
  25. $userfile_type != 'image/gif'){
  26.         $blad='Typ pliku jest b3edny. Mo?na umieszczaa tylko *jpg, *gif, *png lub *bmp.';
  27.     }
  28.  
  29. $data_obrazka = date('jmyhis');
  30. $katalog='upload/';
  31. $name = $katalog.$data_obrazka.'_'.$userfile_name;
  32. $dir = $userfile;
  33.  
  34. if (move_uploaded_file($dir,$name)){
  35. echo('<img src="resizejpeg.php?file='.$name.'&jakosc=85&szerokosc='.$_POST['szerokosc'].'&wysokosc='.$_POST['wysokosc'].'">');
  36.  
  37.  
  38.  
  39.  
  40. } else {$blad = 'Nie udano wrzucic zdjecia na serwer ';}
  41. } else {$blad = 'Inny blad ';} }
  42.  
  43.    if($_POST['R1'] == "V2")
  44.     {
  45.    echo('<img src="resizejpeg.php?file='.$_POST['userfile1'].'&jakosc=85&szerokosc='.$_POST['szerokosc'].'&wysokosc='.$_POST['wysokosc'].'">');
  46.     }
  47.  
  48.  
  49.  
  50. ?>


a z form mam

  1. <form method="POST" enctype="multipart/form-data" action="upload.php">


czytalem na stronie php o tym imagecolor. Ten blad co mi wyskakuje za kazdym razem jak uploaduje fotki.

Cytat
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/a8487159/public_html/resizejpeg.php on line 11


no i pisza tak.

Cytat
imagecreatetruecolor() returns an image identifier representing a black image of the specified size.

Depending on your PHP and GD versions this function is defined or not. With PHP 4.0.6 through 4.1.x this function always exists if the GD module is loaded, but calling it without GD2 being installed PHP will issue a fatal error and exit. With PHP 4.2.x this behaviour is different in issuing a warning instead of an error. Other versions only define this function, if the correct GD version is installed.


wiec pytanie czy to wina serwera ktora nie jest platna?questionmark.gif a jesli bede mial serwer wlasny czy mozna skonfigorowac tego GD2 questionmark.gif bo wtedy niby blad nie bedzie sie pojawil
nospor
Kurde, chlopie, marnujesz nasz czas. Juz trzeci raz ci piszę, ze skoro wysylasz forma postem to masz miec nie $_GET a $_POST a ty dalej swoje. Masz problemy z czytaniem czy jak?

ps: przenosze tam gdzie tego miejsce
^(-.-)^
a tu rozumiesz to co ja pisze ze wszystko jest ok oprocz tego imagetruecolor?questionmark.gif? lol. Nawet podalem co php.pl napisal na ten temat. oO.

dlatego sie pytalem czy przez to ze serwer nie jest skonfigurowane do GD2
Shili
Nie imagecreatetruecolor jest złe, tylko Twoje rozumowanie. Jakbyś się przemógł i podał tam wreszcie dobre dane, co proponuje Ci nospor, to przestałbyś mieć kłopoty z tą funkcją. Jakby jej nie było w php, to nie pisałoby że masz złe wymiary, tylko że nie ma takiej funkcji. Wystarczy pomyśleć, prawda?

I nie jest wszystko ok prócz tego, w sumie to cały skrypt nie jest ok - skoro nie możesz stworzyć obrazka, to leży CAŁA funkcjonalność.
^(-.-)^
Obrazek moge stworzyc i pomniejszyc nawet smile.gif jak daje wartosci czyli szerokosc i wysokosc to razem z obrazkiem blad sie pokazuje smile.gif
Shili
  1. <?php
  2. $image_p = imagecreatetruecolor(100, 100);
  3. ?>
Czyli jak rozumiem zamiast swojego imagecreate... dasz taki kod, to też pokaże warning?

Jeśli jednak czegoś takiego nie zrobi, to zamiast się zaperzać zastanów się co INNEGO jest źle.
^(-.-)^
ale po co mi wartosci 100,100 jak jasne jest napisane ze
Cytat
$new_width = $sze;
$new_height = $wys;
$image_p = imagecreatetruecolor($new_width, $new_height);


czyli wartosci z:
Cytat
$sze = $_GET['szerokosc'];
$wys = $_GET['wysokosc'];


questionmark.gif? po co mi tutaj wciskasz 100, 100?questionmark.gif

owszem pokazuje ten sam warning.
Shili
Chyba jasne po co?
Wartości 100 są zawsze wartościami 100.
$sze nie zawsze będzie sensowną wartością - póki nie debugujesz nie możesz być tego pewny. A z tego co widzę nie debugujesz w żaden sposób.

Testowałam na yoyo i cba - dwóch darmowych serwerach - kod z manuala z imagecreatetruecolor - na obu pokazały mi się obrazki. Innymi słowy jednak masz coś skopane w wymiarach, albo masz spory problem w trafieniu serwera.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.