[php]+[mysql] foto in database (blob) met resize

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02 09:07

Multispeed

HEY! Dat ben ik!

Topicstarter
Hoi

Ik heb een foto upload script die niet helemaal doet wat ik wil ik heb de foutmeldingen al opgezocht op verschillende site's

oa.
www.google.com
www.phphulp.nl
www.phpfreakz.nl
en engelstalige site's

Ik heb hier geen oplossing kunnen vinden. Echter iets wat ik vaak tegen kom is imagecreatefromjpeg terwijl mijn script imagecreatefromstring gebruikt. maar dit nu even ter zijde.

Het script is niet helemaal van mezelf maar heb het wel veranderd.

Ik draai php versie 4.3.8

De foutmelding die ik krijg is o.a
code:
1
2
3
4
5
6
Warning: imagesx(): supplied argument is not a valid Image resource in /home/httpd/domein.nl/www/voegtoedoe.php on line 46

Warning: imagesy(): supplied argument is not a valid Image resource in /home/httpd/domein.nl/www/voegtoedoe.php on line 47

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/httpd/domein.nl/www/voegtoedoe.php on line 65
INSERT INTO verkoop (naam, beschrijving, datum, bedrag, photo) VALUES ("Test", "lalala", "05-10-2005", "2500.00", "?JFIF?CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ?    $.' ",#(7),01444'9=82<.342?  2!!22222222222222222222222222222222222222222222222222?<P"? ?}!1AQa"q2???#B??R&#1136;$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????&#402;&#261;&#391;&#521;&#658;&#1236;&#1366;&#1496;&#1626;&#6307;&#18790;&#31273;&#44146;&#1002870;?? ?w!1AQaq"2?B????#3R&#88242;&#1098;$4&#6513;&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz????????????????????????????????????&#402;&#261;&#391;&#521;&#658;&#1236;&#1366;&#1496;&#1626;&#10468;&#22951;&#35434;&#736565;?????(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??Dit gaat fout


En dit is mijn script

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?
include ( "login/db.php" );
//$query = "INSERT INTO verkoop (naam, beschrijving, datum, bedrag) VALUES (\"$_POST[naam]\", \"$_POST[beschrijving]\", \"$_POST[datum]\", \"$_POST[bedrag]\")";
//print $query;
//mysql_query($query) or die ("Dit gaat fout");


$photoFileName = $_FILES['photo']['name']; // get client side file name
if ($photoFileName) // file uploaded
{       $fileNameParts = explode(".", $photoFileName);
        $fileExtension = end($fileNameParts); // part behind last dot
        if ($fileExtension != "jpg"
                && $fileExtension != "JPEG"
                && $fileExtension != "JPG")
        {       die ("Kies een JPG voor de foto");
        }
        $photoSize = $_FILES['photo']['size']; // size of uploaded file
        if ($photoSize == 0)
        {       die ("Helaas. De upload van $photoFileName is niet gelukt.
Zoek een foto kleiner dan 100K, met behulp van de button.");
        }
        if ($photoSize > 100000000)
        {       die ("Helaas.
Het bestand $photoFileName is groter dan 100K.
Advies: verklein de foto met behulp van een tekenprogramma.");
        }
        //header('Content-Type: image/jpeg');
        // read photo
        $tempFileName = $_FILES['photo']['tmp_name']; // temporary file at server side
        $tempFile = fopen($tempFileName, "r");
        $binaryPhoto = fread($tempFile, fileSize($tempFileName));

        // Try to read image
        $old_error_reporting = error_reporting(E_ALL & ~(E_WARNING)); // ingore warnings
        $src_image = imagecreatefromstring($binaryPhoto); // try to create image
        error_reporting($old_error_reporting);

        if (!$src_image) // error, image is not a valid jpg
{ die ("Helaas.
Het is niet gelukt om de foto $photoFileName te lezen.
Kies een andere foto in JPG formaat.");
        }
}
?>
<?
$width = imagesx($src_img); // get original source image width
        $height = imagesy($src_img); // and height

        // create small thumbnail
        $dest_width = 80;
        $dest_height = 60;
        //$dest_img = imagecreatetruecolor($dest_width, $dest_height);
        $dest_img = imagecreate($dest_width, $dest_height);

/*$result = imagecopyresampled(
        $dest_img, $src_img,
        0, 0, 0, 0,
        $dest_width, $dest_height,
        $width, $height); // resize the image
*/
        imagecopyresized(
                $dest_img, $src_img,
                0, 0, 0, 0,
                $dest_width, $dest_height,
                $width, $height); // resize the image

        ob_start(); // Start capturing stdout.
        imageJPEG($dest_img); // As though output to browser.
        $binaryThumbnail = ob_get_contents(); // the raw jpeg image data.
        ob_end_clean(); // Dump the stdout so it does not screw other output.
?>
<?
$query = "INSERT INTO verkoop (naam, beschrijving, datum, bedrag, photo) VALUES (\"$_POST[naam]\", \"$_POST[beschrijving]\", \"$_POST[datum]\", \"$_POST[bedrag]\", \"$binaryThumbnail\")";
print $query;
mysql_query($query) or die ("Dit gaat fout");
?>


Tot slot nog even dit.

Ik heb geprobeerd imagecreatefromstring te veranderen in imagecreatefromjpeg maar dan zegt hij gelijk

code:
1
2
Het is niet gelukt om de foto chalet.jpg te lezen.
Kies een andere foto in JPG formaat


Ook heb ik header('Content-Type: image/jpeg'); erbij gezet zodat hij misschien gelijk snapte dat het om een jpeg gaat maar dit had alleen als resultaat dat de opmaak veranderde van de foutmelding.


Ik hoop dat ik mijn probleem zo goed duidelijk heb gemaakt.

[ Voor 7% gewijzigd door Multispeed op 05-10-2005 11:16 ]

En toevallig vind ik dus van niet! :-)


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20:03
Ik vermoed dat in het stukje
PHP:
1
2
3
4
5
6
        if (!$src_image) // error, image is not a valid jpg
{ die ("Helaas.
Het is niet gelukt om de foto $photoFileName te lezen.
Kies een andere foto in JPG formaat.");
        }
}


een accolade-sluiten teveel staat.

[edit]
Maar waarom in godsnaam niet gewoon
PHP:
1
$src_image = imagecreatefromjpg($tempFileName);


[edit2]
En het lijkt me niet geheel onverstandig addslashes in je DB-query te gebruiken...

[ Voor 35% gewijzigd door sjroorda op 05-10-2005 11:04 ]


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Die foutmelding ontstaat, omdat je eerste de variabele $src_image vult en daarna gebruik je de variabale $src_img voor de functie imagesx. De laatste variabele is niet eens geinitialiseerd, dus ik neem aan dat je daar ook $src_image wilt hebben ipv $src_img. Daardoor ontstaat de fout dat $img_src een ongeldige Image resource is (waar PHP dus gelijk in heeft).

En verder zou imagecreatefromjpg ook gewoon moeten werken zoals sjroorda al aangeeft.

En zowiezo moet je inderdaad de goede header meesturen als je een plaatje output.

[ Voor 9% gewijzigd door Borizz op 05-10-2005 11:12 ]

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20:03
Borizz schreef op woensdag 05 oktober 2005 @ 11:10:
Die foutmelding ontstaat, omdat je eerste de variabele $src_image vult en daarna gebruik je de variabale $src_img voor de functie imagesx. De laatste variabele is niet eens geinitialiseerd, dus ik neem aan dat je daar ook $src_image wilt hebben ipv $src_img. Daardoor ontstaat de fout dat $img_src een ongeldige Image resource is (waar PHP dus gelijk in heeft).
Dat had ik dus over het hoofd gezien :). Zo te zien zijn dit twee verschillende code-voorbeelden direct achter elkaar geplakt?

Acties:
  • 0 Henk 'm!

  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02 09:07

Multispeed

HEY! Dat ben ik!

Topicstarter
Ja het zjn 2 code voorbeelden maar niet verschillend ze komen uit 1 script.

Maarja dit had ik wel moeten zien....

En toevallig vind ik dus van niet! :-)


Acties:
  • 0 Henk 'm!

  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02 09:07

Multispeed

HEY! Dat ben ik!

Topicstarter
Gelukkig zijn die foutmeldingen nu weg tnx!

het enige dat ik overhoud is


code:
1
INSERT INTO verkoop (naam, beschrijving, datum, bedrag, photo) VALUES ("Test", "lalala", "05-10-2005", "2500.00", "?JFIF?CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ?    $.' ",#(7),01444'9=82<.342?  2!!22222222222222222222222222222222222222222222222222?f??s?&#11822;>&#1132;??g6??J?N[qr1?9^A&#37722;?4???kty?&#10148;?&#716;??&#779;?G&#696;&#513;&#904;&#28686; p&#1224;&#1067;?t?b?r:u?ye?&#1340;Eu&#1794;-&#830;g??&#25607;%_#&#63999;Q&#433;\???,??$Y?z p1?2 &#56797;rZC npr?&#49280;&#449;&#398;9>?{&#1525;zq?&#826314;?&#3779;?rFI}?Vd?HSf&#9522;F&#57833;Y?J?,&#1798;")22.p???&#225258;ZZI?&#38556;???a&#59582;&#162739;?s&#404;?%&#661;??&#710; v?&#50556;&#45615;&#53483;|?g8&#7566;?&#1588;&#54075;7&#1965;z&#1029105;<&#1508;&#58414;&#31375;'?&#355847;??&#1004;h&#1279;?QHF=?&#1513;?vv@?&#637;mtb?mG?&#2020;6A&#604;x?h0??&#15802;?H???@Wh?&#306;???&#374908;???XW?w&#3435;?b?X_2 q?:&#1335;?&#1397;!]E?8&#4809;&#29331;6s?r&#1538;???a!i?|??&#265;&#61775;#???<&#1507;?I%&#804;n&#460;0?7a? y?{`&#6049;&#243123;????????"&#47405;+?/? &#45839;?i?&#438;"???&#1982;?&#513;&#1744;?&#607;?t_ m?<7*&#567;I??&#38757;??V?&#5176;&#1022;;&#15711;M??D&#633;G&?&#1463; &#39106;u?"i$??e&#32704;???sws??&#52407;pXg?W?{&#12029;&#1654;e&#1994;?tv,???f&#829090;Fx?m~Z??&#52934;?<&#1989;&#1683;??XI&#30708;?y???m&#15997;7???`???? &#955;&frac12;L?];&#4932;&#1158;&#1772;&#1140;?px[?'?^s?'?o?&#1836;?c!\t$&#601;P=?=1D?&#1109;o&#52528;&#27902;I+?G&#672;&#385507;1?,?e&#752;1R???)?&#1321;xO&#23388;??&#65340;&#18229;#=&#993;&#1236;*?&#25778;A&#611;? ?O&#21550;gv&#927;? ?>?&#2005;n&#1472;?)FC2&#21603;>?&#455;??&#439;a??J&#566;&#5085;??z?&#784;g?\`q&#51884;i&#932;¿???&#1286;&#46118;0r&#54225;&#1011;??(??&#857;{y ?Y??2?N??&#47366;O?}&#1417;`G&#13058;&#58806;?&#41152; &#1023;?&#780;]GLmD?&#727254;?7&#1690;N&#559575;&#46608;4&#393;???as?&#51218;??&#1413;D>d??&#391;\v&#326;??z?mrG&#349070;~????-?s???1=?h ?q&#36510;&#1102290;?[ &#673;U??$888&#481;ZW&#1006904;?Wl? ?1??5??*??&#1829;A&#31841;&#44890;9?&#2024;@l?1&#1735;&#37205;?&#1275;*?fV8f=@&#54019;&#1017;&#46237;)&#921851;yl&#480;tAU?5l?A(d&#573;&#369156;??Dit gaat fout


Ik snap nog niet helemaal wat hier foutgaat maarja ik probeer dat eerst wel weer te zoeken :)

[ Voor 16% gewijzigd door Multispeed op 05-10-2005 11:23 ]

En toevallig vind ik dus van niet! :-)


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20:03
Addslashes toevoegen in de query.

Acties:
  • 0 Henk 'm!

  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02 09:07

Multispeed

HEY! Dat ben ik!

Topicstarter
Alles werkt nu

Ik heb nog even een
PHP:
1
$binaryThumbnail = addslashes($binaryThumbnail);


Toegevoegd

en van imagecreate een imagecreatetruecolor gemaakt

Tnx voor jullie hulp

En toevallig vind ik dus van niet! :-)

Pagina: 1