Avatar billede fixbabe Nybegynder
16. marts 2008 - 22:41 Der er 10 kommentarer og
1 løsning

GDLib nedscalering og vandmærke med dato samt tid

Jeg har følgende script

if(move_uploaded_file($_FILES['userfile']['tmp_name'], 'shots/temp1/'.$_FILES['userfile']['name'])) {

rename('shots/temp1/'.$_FILES['userfile']['name'], 'shots/temp2/'.$userid.'.jpeg');
} else { print 'error'; }

Efter rename skal billedet scaleres ned til 640*480 og så smides over i mappe temp3

efter dette skal der et vandmærke i bunden hvor selve vandmærket er filen lay.png som er et billede med et lille logo i venstre side, i højre side skal datoen for i dag samt klokkeslet stå.
hvor efter billedet skal flyttes til /shots mappen..

jeg kan ikke se mig ud af denne og håber en eller anden kan.
Avatar billede jakobdo Ekspert
16. marts 2008 - 22:54 #1
Har du kigget på mine "artikler" om netop og resize, samt sætte vandmærke på et billede ?
Avatar billede fixbabe Nybegynder
16. marts 2008 - 23:11 #2
Nej, men det gør jeg nu :)
Avatar billede fixbabe Nybegynder
16. marts 2008 - 23:35 #3
Nu har jeg brugt de to script du har lavet, nu mangler jeg bare det med datoen samt klokken i højre hjørne nederst. En anden fejl, min layer fil er i png og er gennemsigtig  dog kommer der en hvid baggrund der hvor den er gennemsigtig
Avatar billede coderdk Praktikant
17. marts 2008 - 09:08 #4
dato/tid er jo det samme som tekst - du skal bare bruge date eller strftime.
Mht. transparens, kig på http://dk2.php.net/imagealphablending
Avatar billede fixbabe Nybegynder
17. marts 2008 - 10:01 #5
Hvordan får jeg datoen ind op billedet ? planen var at bruge date() som så bare skal oven på billedet nederst i højre hjørne
Avatar billede jakobdo Ekspert
11. april 2008 - 12:04 #6
Følgende virker fint hos mig.

Brug resize og watermark fra mine artikler:

$original_image    = 'http://www.codebreaker.dk/valdemar.jpg';
$resized_image    = 'upload/valdemar_resized.jpg';
$watermarked_image = 'upload/valdemar_watermark.jpg';

echo '<img src="'.$original_image.'" alt="Valdemar Original" /><hr />';
if(resize($original_image,$resized_image,400,400)){
    echo '<img src="'.$resized_image.'" alt="Valdemar Resized" /><hr />';
    if(watermark($resized_image,$watermarked_image)){
        echo '<img src="'.$watermarked_image.'" alt="Valdemar Watermarked" /><hr />';
    }
}

Og her kan koden ses i aktion: http://www.codebreaker.dk/exp/823986exp.php
Avatar billede fixbabe Nybegynder
11. april 2008 - 12:08 #7
:) takker, smid et svar
Avatar billede jakobdo Ekspert
11. april 2008 - 12:24 #8
Der mangler stadig dato.
2 sekunder...
Avatar billede jakobdo Ekspert
11. april 2008 - 12:30 #9
Sådan:

<?php
//http://www.eksperten.dk/spm/823986

function getExt($filename)
{
  return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function watermark( $filename, $newfilename, $watermark='watermark.png', $quality=85 )
{
  $ext = getExt( $filename );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
 
  $srcw  = imagesx($srcim);
  $srch = imagesy($srcim);
 
  $wext = getExt( $watermark );
  switch($wext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $watim = imagecreatefromjpeg( $watermark );
      break;
    case 'gif':
      $watim = imagecreatefromgif( $watermark );
      break;
    case 'png':
      $watim = imagecreatefrompng( $watermark );
      break;
    default:
      return false;
  }
 
  $watw  = imagesx($watim);
  $wath = imagesy($watim);
 
  if($watw > $srcw || $wath > $srch)
  {
    return false;
  }
 
  $dest_x = $srcw - $watw;
  $dest_y = $srch - $wath;
  imagecopymerge($srcim, $watim, $dest_x, $dest_y, 0, 0, $watw, $wath, 100 );
 
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $srcim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $srcim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $srcim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $srcim );
  imagedestroy( $watim );
  return file_exists($newfilename);
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $ext = getExt( $filename );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $hscale, $wscale );
  $nw = round( $ow * $scale, 0 );
  $nh = round( $oh * $scale, 0 );
  $dstim = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}

function addText( $filename, $newfilename, $text, $quality=85 )
{
  $ext = getExt( $filename );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
 
  $srcw  = imagesx($srcim);
  $srch = imagesy($srcim);
 
  $textcolor = imagecolorallocate($srcim, 0, 0, 255);
    imagestring($srcim,3,10,10,$text,$textcolor);
 
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $srcim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $srcim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $srcim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $srcim );
  return file_exists($newfilename);
}

$original_image    = 'http://www.codebreaker.dk/valdemar.jpg';
$resized_image    = 'upload/valdemar_resized.jpg';
$watermarked_image = 'upload/valdemar_watermark.jpg';
$textadded_image  = 'upload/valdemar_text.jpg';

echo '<img src="'.$original_image.'" alt="Valdemar Original" /><hr />';
if(resize($original_image,$resized_image,400,400)){
    echo '<img src="'.$resized_image.'" alt="Valdemar Resized" /><hr />';
    if(watermark($resized_image,$watermarked_image)){
        echo '<img src="'.$watermarked_image.'" alt="Valdemar Watermarked" /><hr />';
        if(addText($watermarked_image,$textadded_image,date('d-m-Y H:i:s'))){
            echo '<img src="'.$textadded_image.'" alt="Valdemar Textadded" /><hr />';
        }
    }
}

?>
Avatar billede fixbabe Nybegynder
11. april 2008 - 12:32 #10
Det må jeg nok sige :)
Avatar billede jakobdo Ekspert
11. april 2008 - 12:36 #11
Så skal du bare lige rette lidt til, så datoen flyttes korrekt til det hjørne du vil.
Og i stedet for imagestring() bør du bruge: imagettftext
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