watermerk op een afbeelding in img tag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Robert Jansen

Robert Jansen

18/10/2019 13:39:07
Quote Anchor link
Hallo,

Ik ben bezig om een script te schrijven om een watermerk png-afbeelding op een jpg afbeelding te zetten in een img tag.
Maar ik krijg de volgende output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
JFIF``>CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br 


Ik begrijp niet waarom ik dit krijg.
Krijg ook geen errors.
De code is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


$stamp = imagecreatefrompng('stampimg.png');
$im = imagecreatefromjpeg('flower.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$imgx = imagesx($im);
$imgy = imagesy($im);
$centerX=round($imgx/2);
$centerY=round($imgy/2);


imagecopy($im, $stamp, $centerX, $centerY, 0, 0, imagesx($stamp), imagesy($stamp));



 echo '<img src=" $im " alt=""> ';
 
imagejpeg($im);
imagedestroy($im);
?>


<img src="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $im; ?>
" alt="">


Hoe krijg ik de afbeelding te zien met het watermerk in de img tag?

alvast bedankt
 
PHP hulp

PHP hulp

19/11/2019 04:35:26
 
- Ariën -
Beheerder

- Ariën -

18/10/2019 13:46:21
Quote Anchor link
Je slaat nu een aantal planken mis:
Je mist sowieso de header() die aangeeft dat je output een afbeelding is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Content-Type: image/png');

En verder hoor je jouw afbeelding apart aan te roepen vanuit een ander bestand. Je haalt nu een result op waar je niks mee kan.

Je PHP-script regelt enkel het genereren van de afbeelding, NIET het aanroepen ervan.
Gewijzigd op 18/10/2019 13:51:56 door - Ariën -
 
Robert Jansen

Robert Jansen

18/10/2019 14:15:57
Quote Anchor link
Bedankt voor de info, maar hoe stuur ik de bovenstaande code door naar een ander bestand?
 
- Ariën -
Beheerder

- Ariën -

18/10/2019 14:29:59
Quote Anchor link
Gewoon door je losse PHP-script in je website op te roepen als image:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="afbeelding.php" alt="Bekijk deze afbeelding">
Gewijzigd op 18/10/2019 14:30:22 door - Ariën -
 
Robert Jansen

Robert Jansen

18/10/2019 15:03:33
Quote Anchor link
ik heb nu twee bestanden: image.php en index.php.
In image.php staat de code van mijn eerste bericht maar met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Content-Type: image/png');
onder de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
imagecopy($im, $stamp, $centerX, $centerY, 0, 0, imagesx($stamp), imagesy($stamp));


In index.php staat :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="image.php" alt="bekijk image">


Ik zie nu alleen de alt tekst: bekijk image, als ik index.php open in de browser. De 2 bestanden en de twee afbeeldingen zitten allemaal in de root.

Maar ik zie geen afbeelding, hoe kan dit?
 
- Ariën -
Beheerder

- Ariën -

18/10/2019 15:10:43
Quote Anchor link
Haal de header eens weg, en open image.php in de browser?
Ik vermoed dat je dan een foutmelding ziet.
 
Robert Jansen

Robert Jansen

18/10/2019 15:18:10
Quote Anchor link
dan krijg ik dit te zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
????JFIFHH??>
CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality ??C    $.' ",#(7),01444'9=82<.342??C  2!!22222222222222222222222222222222222222222222222222??i C"?? ???}!1AQa"q2???#B??R??$3br? 
 
- Ariën -
Beheerder

- Ariën -

18/10/2019 15:26:48
Quote Anchor link
Dan heb ik het vermoeden dat er niks met de afbeelding is.
Misschien is het handig om defensief te programmeren, zoals example #1 van deze site:
https://www.php.net/manual/en/function.imagecreatefrompng.php

Dus bouw if-else-structuren in, en kijk welke voorwaarden worden doorlopen.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 15:54:19
Quote Anchor link
PNG header <---> JPEG afbeelding, dat gaat 'em sowieso niet worden.
 
Rob Doemaarwat

Rob Doemaarwat

18/10/2019 16:18:16
Quote Anchor link
Wat thomas bedoelt: vervang
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Content-Type: image/png');
door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Content-Type: image/jpeg');
Je schrijft immers met imagejpeg($im); een JPEG weg ...
Gewijzigd op 18/10/2019 16:18:48 door Rob Doemaarwat
 
Robert Jansen

Robert Jansen

18/10/2019 16:25:36
Quote Anchor link
als ik dit doe dan krijg ik een zwart scherm te zien...
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 16:38:51
Quote Anchor link
Haal de header dan weg en roep image.php rechtstreeks aan en kijk wat voor foutmelding dit oplevert.

Je zult waarschijnlijk iets moeten doen met imagecopymerge() in plaats van simpelweg imagecopy() om een semi-doorzichtig watermerk te krijgen zoals in -letterlijk- het eerste Google resultaat wordt gedemonstreerd.

Je kunt niet simpelweg het ene plaatje kopiëren naar het andere plaatje als je wilt dat de "stampimg" doorzichtig is.
 
Michael -

Michael -

21/10/2019 17:20:10
Quote Anchor link
Robert Jansen op 18/10/2019 15:03:33:
In image.php staat de code van mijn eerste bericht maar met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Content-Type: image/png');
onder de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
imagecopy($im, $stamp, $centerX, $centerY, 0, 0, imagesx($stamp), imagesy($stamp));

Plaats je header eens helemaal bovenaan. En zorg voor geen enkele output (echo, print, return o.i.d.)

Toevoeging:
Getest en dit werkt hier prima
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
header('Content-Type: image/jpeg');

$stamp = imagecreatefrompng('https://www.bolster.nl/media/images/vlinder_klein.png');
$im = imagecreatefromjpeg('https://www.bolster.nl/media/images/5450_dbweb.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$imgx = imagesx($im);
$imgy = imagesy($im);
$centerX=round($imgx/2);
$centerY=round($imgy/2);


imagecopy($im, $stamp, $centerX, $centerY, 0, 0, imagesx($stamp), imagesy($stamp));
 
imagejpeg($im);
imagedestroy($im);
?>
Gewijzigd op 21/10/2019 17:27:38 door Michael -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.