Ich habe ein Script, welches mir ein Wasserzeichen auf Bilder macht. Nun ist es aber leider so, dass wenn Bilder recht groß sind, wird das Wasserzeichen ziemlich kein dargestellt.
Deswegen würde ich die Bilder gern auf eine maximale Größe verkleinern. Html kann ich zwar aber bei PHP hört leider mein Verständnis auf, deswegen wollte ich mal fragen ob mir jemand von euch helfen könnte, oder ob jemand eine andere Idee hat.
Hier mal meine php Datei dazu
Deswegen würde ich die Bilder gern auf eine maximale Größe verkleinern. Html kann ich zwar aber bei PHP hört leider mein Verständnis auf, deswegen wollte ich mal fragen ob mir jemand von euch helfen könnte, oder ob jemand eine andere Idee hat.
Hier mal meine php Datei dazu
PHP:
<?php
function watermarkImage($tmpName)
{
$scaling = 0.20;
$watermarkPadding = 30;
$uploadedImage = file_get_contents($tmpName);
$image = new Imagick();
$image->readImageBlob($uploadedImage);
$imageWidth = $image->getImageWidth();
$imageHeight = $image->getImageHeight();
$watermark = new Imagick();
$watermark->readImage("img//watermark.png");
$watermark->scaleImage($watermark->getImageWidth() * $scaling, $watermark->getImageHeight() * $scaling);
$watermarkWidth = $watermark->getImageWidth();
$watermarkHeight = $watermark->getImageHeight();
$watermarkLocationX = $imageWidth - $watermarkPadding - $watermarkWidth;
$watermarkLocationY = $imageHeight - $watermarkPadding - $watermarkHeight;
$image->compositeImage($watermark, imagick::COMPOSITE_OVER, $watermarkLocationX, $watermarkLocationY);
$image->setFilename(uuid());
return base64_encode($image);
}
function uuid()
{
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
}
$uploadedImage = false;
if (!empty($_FILES)) {
$base64encodedImages = [];
foreach ($_FILES['images']['tmp_name'] as $tmpName) {
$base64encodedImages[] = watermarkImage($tmpName);
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Wasserzeichen</title>
<style>
input[type=file], input[type=submit] {
background-color: #1B91DB;
border: none;
text-decoration: none;
color: white;
padding: 10px 10px;
margin: 10px 10px;
cursor: pointer;
}
</style>
</head>
<body>
<h3>Wasserzeichen</h3>
<p>Bitte lad eine Datei hoch um diese mit dem hinterlegten Wasserzeichen zu ergänzen.</p>
<form method="post" enctype="multipart/form-data">
<input type="file" name="images[]" accept="image/*" required multiple="multiple"><br>
<input type="submit">
</form>
<?php
if (!empty($base64encodedImages)) {
foreach ($base64encodedImages as $fileName => $base64encodedImage) {
?>
<a href="data:image/jpeg;base64,<?= $base64encodedImage ?>" download="<?= uuid() ?>.jpg">
<img width="300" src="data:image/jpeg;base64,<?= $base64encodedImage ?>">
</a>
<?php
}
}
?>
</body>
</html>