Avatar billede reflex Nybegynder
12. maj 2006 - 09:03 Der er 12 kommentarer og
1 løsning

Problem med vandmærke

Hej alle,

Jeg har et lille problem med at sætte vandmærke på on-the-fly.Det script jeg bruger er fra en bruger jeg ikke kan huske navnet på, men det virker fint med ét billede. Problemet er så at jeg gerne vil uploade op til 4 billeder af gangen, og det er så her jeg skal bruge noget hjælp. Kan det gøres med en while løkke eller ligne??



<?php

require("connect.php");
$uploaddir = '/radio/';
$allowPics = array(
    1 => "GIF",
    2 => "JPG",
);

$watermark_png = "watermark.png";

/********************************************\
* Udligner forskellene mellem 4.1.x og 4.0.x *
* Bemaerk, at disse ikke er "superglobals"  *
\********************************************/
if($minor < 1)
{
    $_FILES = $HTTP_POST_FILES;
    $_POST = $HTTP_POST_VARS;
    $_SERVER = $HTTP_SERVER_VARS;
}

if($_FILES["userFile"]["size"] > 0)
{
    $uploadfile = getcwd() . $uploaddir . basename($_FILES['userFile']['name']);
   
    $size = getimagesize($_FILES['userFile']['tmp_name']);
       
    $imgSrc = $_FILES['userFile']['tmp_name'];

    $watermark = imagecreatefrompng($watermark_png);
 
    $watermark_width = imagesx($watermark);
    $watermark_height = imagesy($watermark);

    $image = imagecreatetruecolor($watermark_width, $watermark_height);

    list($width, $height, $type, $attr) = getimagesize($imgSrc);
    switch($type)
    {
        case 1:
            $image = imagecreatefromgif($imgSrc);
            break;
        case 2:
            $image = imagecreatefromjpeg($imgSrc);
            break;
    }

    if($watermark_width > $width || $watermark_height > $height)
    {
        $dstim = imagecreatetruecolor(30, 10);
        imagecopyresampled( $dstim, $watermark, 0, 0, 0, 0, 30, 10, $watermark_width, $watermark_height );
        $dest_x = $width - 35;
        $dest_y = $height - 15;

        imagecopymerge($image, $dstim, $dest_x, $dest_y, 0, 0, 30, 10, 100);
    }
    else
    {
        $dest_x = $width - $watermark_width - 5;
        $dest_y = $height - $watermark_height - 5;
   
        imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
    }


    switch($type)
    {
        case 1:
            imagegif($image,$uploadfile);
            break;
        case 2:
            imagejpeg($image,$uploadfile);
            break;
    }

    imagedestroy($image);
    imagedestroy($watermark);
 
        header("location: " . $_SERVER['PHP_SELF']);

}
else
{

?>
<br><h2>Opret under B&O</h2>
<TABLE BORDER="0" CELLPADDING="10" CELLSPACING="10"><TR>

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<tr><td>

Mærke: (f.eks. B&O, Philips osv.)<br>
<input type="text" name="maerke" size="50" maxlength="50"></td></tr>

<tr><td>
Model: (f.eks. BDK 223U)<br>
<input type="text" name="model" size="50" maxlength="50"></td></tr>

<tr><td>
Beskrivelse: (f.eks. Flot radio uden ridser, virker perfekt)<br>
<textarea name="beskrivelse" rows="11" cols="63" wrap maxlength="500"></textarea></td></tr>

<tr><td>
Billede 1: (skal bruges, størrelse = 300x225 pixels)<br>
<input type="file" name="userFile" size="100"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">

<tr><td>
Billede 2: (valgfri, størrelse = 300x225 pixels)<br>
<input type="file" name="userFile2" size="100"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">

<tr><td>
Billede 3: (valgfri, størrelse = 300x225 pixels)<br>
<input type="file" name="userFile3" size="100"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">

<tr><td>
Billede 4: (valgfri, størrelse = 300x225 pixels)<br>
<input type="file" name="userFile4" size="100"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">

<tr><td>
<INPUT TYPE="submit" NAME="Submit" VALUE="Send"></form></td></tr></table>

<?
}
?>
Avatar billede jakobdo Ekspert
12. maj 2006 - 11:28 #1
Det ligner noget slamkode jeg har lavet! :o)
Skal nok kigge på en løsning med flere billeder senere.
Avatar billede jakobdo Ekspert
12. maj 2006 - 12:12 #2
I stedet for at bruge: userFile, userFile2, userFile3 osv...
Så lav:
userFile[] ved alle 4 billeder.
Så vil du kunne trække dem ud i et array efterfølgende.
Avatar billede reflex Nybegynder
12. maj 2006 - 12:16 #3
He he jep det var vist din kode :p
skal det så være userFile[1] userFile[2] osv.??

Jeg koder kun en smugle en gang om året, så jeg har det med at glemme ting :s
Evt. et lille eks. ville være rigtig godt ;)
Avatar billede jakobdo Ekspert
12. maj 2006 - 12:20 #4
Du kan så bruge userFile[0], 1 2 osv.
Nemmeste er at lave et loop, f.eks. ved brug af foreach($_FILES[userFile] AS $file)
Avatar billede reflex Nybegynder
12. maj 2006 - 12:22 #5
Sorry men det er græsk for mig :(
Avatar billede jakobdo Ekspert
12. maj 2006 - 16:54 #6
Avatar billede jakobdo Ekspert
12. maj 2006 - 16:54 #7
Dog virker den nu kun med jpg/jpeg/jpe filer.
Og ikke GIF som før.
Avatar billede reflex Nybegynder
12. maj 2006 - 23:14 #8
Det gør ikke så meget det med gif, det er kun jpg'er jeg skal bruge. Kigger på det i morgen efter arbejde. Men det ser lovende ud :)
Avatar billede reflex Nybegynder
13. maj 2006 - 08:16 #9
Det virker helt fint, jeg takker mange gange!!
Post et svar og du får dine point.
Avatar billede jakobdo Ekspert
13. maj 2006 - 09:09 #10
Svar!
Avatar billede reflex Nybegynder
13. maj 2006 - 19:20 #11
Øh hvis jeg skal træke de 5 billeders navne ud, som jeg skal gemme i en MySql DB har du så en ide. Jeg kan jo ikke bare skrive $userFile[0] :(
Avatar billede reflex Nybegynder
14. maj 2006 - 10:27 #12
Nå jeg fandt ud af det :)
Avatar billede jakobdo Ekspert
14. maj 2006 - 18:50 #13
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester