Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]function.imagecreatetruecolor
^(-.-)^
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (znaczy czytalem cos na temat tego imagecreatetruecolor na stronie phpclasses i na stronie php.pl ale nadal nie jasne (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) wiecie jak to naprawic?(IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


zapewniam cie ze istnieje (IMG:http://forum.php.pl/style_emoticons/default/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..

Ten post edytował ^(-.-)^ 5.09.2008, 16:53:01
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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" (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Nastepnym razem wiec mnie nie zapewniaj a zrob oco prosze, czyli ECHO
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no widzisz, czyli nic ci z forma nie pobiera...
ustawiles te $_POST jak prosilem? Bo widze ze form wysylasz postem.
Go to the top of the page
+Quote Post
bikerszymek
post
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


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);


Ten post edytował bikerszymek 8.09.2008, 09:09:36
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


Cytat
(wydaje mi sie ze podajesz zla sciezke do pliku)



Mam dobra sciezke (IMG:http://forum.php.pl/style_emoticons/default/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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) a jesli bede mial serwer wlasny czy mozna skonfigorowac tego GD2 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) bo wtedy niby blad nie bedzie sie pojawil
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #10





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


a tu rozumiesz to co ja pisze ze wszystko jest ok oprocz tego imagetruecolor?(IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
Shili
post
Post #11





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


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ść.

Ten post edytował Shili 9.09.2008, 11:18:22
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #12





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


Obrazek moge stworzyc i pomniejszyc nawet (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jak daje wartosci czyli szerokosc i wysokosc to razem z obrazkiem blad sie pokazuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Shili
post
Post #13





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
^(-.-)^
post
Post #14





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (20%)
X----


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'];


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? po co mi tutaj wciskasz 100, 100?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

owszem pokazuje ten sam warning.
Go to the top of the page
+Quote Post
Shili
post
Post #15





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Shili 9.09.2008, 12:02:03
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:43