Avatar billede axel21 Juniormester
11. december 2008 - 16:59 Der er 34 kommentarer og
1 løsning

Hjælp til hvid baggrund

Hey,

har hentet dette script på nettet, men når et billede indsættes med transperant baggrund bliver det sort, kan dette laves om til hvid...



//SETTINGS
$uploadDir = '../update/logo/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = '../update/thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = 'thumb_'; //Hvad skal tilføjes til originalt filnavn?
$thumbHeight = 100; //Thumb højde
$thumbWidth = 100; //Thumb bredde
$thumbQuality = 85; //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

//Funktioner som bruges:
function getExtension($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
$extension = getExtension($filename);
switch($extension)
{
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($extension)
{
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);
}
Avatar billede jakobdo Ekspert
11. december 2008 - 20:14 #1
Du kunne finde index for sort og så skifte den til hvid via:
http://dk.php.net/manual/en/function.imagecolorset.php
Avatar billede axel21 Juniormester
11. december 2008 - 21:05 #2
Hmm, prøvede at rette

imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

til

imagecopyresampled( $dstim, $srcim, 0, 255, 255, 255, $nw, $nh, $ow, $oh );

men det virker ikke.

kan jeg bare ændre imagecopyresampled til imagecolorset?
Avatar billede jakobdo Ekspert
11. december 2008 - 21:33 #3
Du kan måske nøjes med at bruge imagecopy()
Avatar billede mindtwister Nybegynder
12. december 2008 - 00:46 #4
Kode skamløst stjålet fra http://dk.php.net/manual/en/function.imagecreatetruecolor.php
<?php
    $png = imagecreatetruecolor(800, 600);
    imagesavealpha($png, true);

    $trans_colour = imagecolorallocatealpha($png, 0, 0, 0, 127);
    imagefill($png, 0, 0, $trans_colour);
 
?>
Det du essentielt gør her er at lave en ny farve( 100% transparent sort )og fylder billedet med den farve, herefter ligger du bare det nye billede oven i med imagecopyresampled.
(Skrevet som kommentar fordi jeg stjal koden ;)
Avatar billede axel21 Juniormester
29. december 2008 - 10:57 #5
Tak for det fine svar, men er desværre ikke så skarp til dette her billede halløj, kunne jeg mon ikke lokke nogen til at komme med et konkret eksempel på hvordan dette gøres ud fra mit script?
Avatar billede axel21 Juniormester
07. januar 2009 - 13:32 #6
Slet ikke nogen?
Avatar billede jakobdo Ekspert
07. januar 2009 - 13:42 #7
Hvad er det du mangler ?
Du har fået flere forslag, er der ingen af dem som virker ?
Og ellers så vis et billede og fortæl hvordan det skal se ud bagefter.
Avatar billede axel21 Juniormester
07. januar 2009 - 14:00 #8
Der er sikket flere af forslagene der virker, jeg er bare ikke i stand til at sætte det ordentligt sammen. Når jeg prøver de forskellige muligheder kommer der bare en sort firkant frem, som har lagt sig over på billedet.


imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

til

imagecopy( $dstim, $srcim, 0, 255, 255, 255, $nw, $nh, $ow, $oh );
Avatar billede jakobdo Ekspert
07. januar 2009 - 14:06 #9
Har du et link til et billede med transparent baggrund ?
Så smid det lige herind, så jeg kan teste på det.
Avatar billede axel21 Juniormester
07. januar 2009 - 14:12 #10
Ved ikke om det har transparent baggrund, men baggrunden bliver sort, så kun det farvede kan ses.

http://www.lollandbib.dk/Billeder/LollandLogo.gif
Avatar billede jakobdo Ekspert
07. januar 2009 - 14:38 #11
Fandt faktisk dette script: http://mediumexposure.com/techblog/smart-image-resizing-while-preserving-transparency-php-and-gd-library
Det klarer også dit transparente billede uden problemer. :o)
Avatar billede axel21 Juniormester
07. januar 2009 - 14:53 #12
Hmm, er det fordi det er meget besværligt at lave? for har brugt temmelig lang tid på at rette scriptet ind på den side det skal bruges med div. settings.
Avatar billede jakobdo Ekspert
07. januar 2009 - 15:03 #13
Du kalder bare:
smart_resize() og ikke resize()
Så det er ikke besværligt, men det vil være besværligt at jeg skal til at rette mit script til. :o)
Avatar billede axel21 Juniormester
07. januar 2009 - 15:18 #14
hvad med alle mine settings? De ryger jo væk?
Avatar billede jakobdo Ekspert
07. januar 2009 - 15:31 #15
Ahhh...

Hvis du kigger, så er der en funktion i din tidligere kode, den hedder function resize(.....)
Den replacer du med smart_resize() og så kan du jo sagtens bruge dine settings.
Avatar billede axel21 Juniormester
07. januar 2009 - 15:45 #16
Den smider stadig billedet ud med sort baggrund.?
Avatar billede axel21 Juniormester
07. januar 2009 - 15:46 #17
SCRIPT:


<?php
if(isset($_POST['update']) && is_numeric($_POST['id']))
{

include("../connect.php");

//SETTINGS
$logoname = $id . '.'; // hvad skal (thumb) logo ændres til
$uploadDir = '../update/logo/';  //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = '../update/thumbs/';  //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = $id . ' thumb_'; //Hvad skal tilføjes til originalt filnavn? //bruges ikke p.t.(mmk)
$thumbHeight = 100;  //Thumb højde
$thumbWidth = 200;  //Thumb bredde
$thumbQuality = 90;  //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

//Funktioner som bruges:
function getExtension($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function smart_resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false )
  {
    if ( $height <= 0 && $width <= 0 ) {
      return false;
    }

    $info = getimagesize($file);
    $image = '';

    $final_width = 0;
    $final_height = 0;
    list($width_old, $height_old) = $info;

    if ($proportional) {
      if ($width == 0) $factor = $height/$height_old;
      elseif ($height == 0) $factor = $width/$width_old;
      else $factor = min ( $width / $width_old, $height / $height_old); 

      $final_width = round ($width_old * $factor);
      $final_height = round ($height_old * $factor);

    }
    else {
      $final_width = ( $width <= 0 ) ? $width_old : $width;
      $final_height = ( $height <= 0 ) ? $height_old : $height;
    }

    switch ( $info[2] ) {
      case IMAGETYPE_GIF:
        $image = imagecreatefromgif($file);
      break;
      case IMAGETYPE_JPEG:
        $image = imagecreatefromjpeg($file);
      break;
      case IMAGETYPE_PNG:
        $image = imagecreatefrompng($file);
      break;
      default:
        return false;
    }

    $image_resized = imagecreatetruecolor( $final_width, $final_height );

    if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
      $trnprt_indx = imagecolortransparent($image);

      // If we have a specific transparent color
      if ($trnprt_indx >= 0) {

        // Get the original image's transparent color's RGB values
        $trnprt_color    = imagecolorsforindex($image, $trnprt_indx);

        // Allocate the same color in the new image resource
        $trnprt_indx    = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

        // Completely fill the background of the new image with allocated color.
        imagefill($image_resized, 0, 0, $trnprt_indx);

        // Set the background color for new image to transparent
        imagecolortransparent($image_resized, $trnprt_indx);


      }
      // Always make a transparent background color for PNGs that don't have one allocated already
      elseif ($info[2] == IMAGETYPE_PNG) {

        // Turn off transparency blending (temporarily)
        imagealphablending($image_resized, false);

        // Create a new transparent color for image
        $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);

        // Completely fill the background of the new image with allocated color.
        imagefill($image_resized, 0, 0, $color);

        // Restore transparency blending
        imagesavealpha($image_resized, true);
      }
    }

    imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);

    if ( $delete_original ) {
      if ( $use_linux_commands )
        exec('rm '.$file);
      else
        @unlink($file);
    }

    switch ( strtolower($output) ) {
      case 'browser':
        $mime = image_type_to_mime_type($info[2]);
        header("Content-type: $mime");
        $output = NULL;
      break;
      case 'file':
        $output = $file;
      break;
      case 'return':
        return $image_resized;
      break;
      default:
      break;
    }

    switch ( $info[2] ) {
      case IMAGETYPE_GIF:
        imagegif($image_resized, $output);
      break;
      case IMAGETYPE_JPEG:
        imagejpeg($image_resized, $output);
      break;
      case IMAGETYPE_PNG:
        imagepng($image_resized, $output);
      break;
      default:
        return false;
    }

    return true;
  }
Avatar billede jakobdo Ekspert
07. januar 2009 - 15:56 #18
Så laver du noget forkert.
Se eksempel her: http://www.codebreaker.dk/leg/856154.php
Avatar billede axel21 Juniormester
07. januar 2009 - 16:00 #19
Jeg har copy/pastet scriptet ind! Jeg laver ikke mere med billedet end det der er vist her.?
Avatar billede jakobdo Ekspert
07. januar 2009 - 21:23 #20
Og hvilket billede arbejder du på nu ?
Avatar billede jakobdo Ekspert
07. januar 2009 - 21:24 #21
Og hvilken type billede gemmer du billedet som ?
Avatar billede axel21 Juniormester
07. januar 2009 - 21:53 #22
Jeg uploader et gif billede, som jeg forventer at få ud i gif.


KOMPLET SCRIPT:

retvirksomhed.php



<?php
if(isset($_POST['update']) && is_numeric($_POST['id']))
{

include("../connect.php");

//SETTINGS
$logoname = $id . '.'; // hvad skal (thumb) logo ændres til
$uploadDir = '../update/logo/';  //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = '../update/thumbs/';  //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = $id . ' thumb_'; //Hvad skal tilføjes til originalt filnavn? //bruges ikke p.t.(mmk)
$thumbHeight = 100;  //Thumb højde
$thumbWidth = 200;  //Thumb bredde
$thumbQuality = 90;  //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

//Funktioner som bruges:
function getExtension($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
$extension = getExtension($filename);

switch($extension)
{
  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($extension)
{
  case 'jpeg':
  case 'jpe':
  case 'jpg':
  imagejpeg( $dstim, $newfilename . $extension, $quality );
  break;
  case 'gif':
  imagegif( $dstim, $newfilename . $extension );
  break;
  case 'png':
  $png_q = floor( abs( $quality / 10 - 9.9 ) );
  imagepng( $dstim, $newfilename . $extension, $png_q );
  break;
  default:
  return false;
}

imagedestroy( $dstim );
imagedestroy( $srcim );
return file_exists($newfilename . $extension);
}


//Er der trykket på Upload file knappen?
if(isset($_POST['update']))
{


    $id = intval($_POST['id']);
    //$navn = mysql_real_escape_string($_POST['navn']);
    //$adresse = mysql_real_escape_string($_POST['adresse']);
    //$postnr = mysql_real_escape_string($_POST['postnr']);
    //$by = mysql_real_escape_string($_POST['by']);
    $telefon1 = mysql_real_escape_string($_POST['telefon1']);
    $telefon2 = mysql_real_escape_string($_POST['telefon2']);
    $fax = mysql_real_escape_string($_POST['fax']);
    $email = mysql_real_escape_string($_POST['email']);
    $web = mysql_real_escape_string($_POST['web']);
    $region = mysql_real_escape_string($_POST['region']);
    $cvr = mysql_real_escape_string($_POST['cvr']);
    $branche = mysql_real_escape_string($_POST['branche']);
        $logo = mysql_real_escape_string($_POST['logo']);
    $antalmedarbejder = mysql_real_escape_string($_POST['antalmedarbejder']);
    $virksomhedstype = mysql_real_escape_string($_POST['virksomhedstype']);
        $stoettevis = mysql_real_escape_string($_POST['stoettbevis']);
           


    mysql_query("UPDATE kopi_virksomheder SET
        telefon1 = '".$telefon1."',
        telefon2 = '".$telefon2."',
        fax = '".$fax."',
        email = '".$email."',
        web = '".$web."',
        region = '".$region."',
        cvr = '".$cvr."',
        branche = '".$branche."',
       
        antalmedarbejder = '".$antalmedarbejder."',
        virksomhedstype = '".$virksomhedstype."',
                stoettebevis = '".$stoettebevis."'

    WHERE id = '".$id."' LIMIT 1") or die(mysql_error());
   
          if(mysql_affected_rows() >= 1)
      {
        header('Location: forside.php?virksomhedsid=' . $id);
        exit();
      }
      else
      {
          $error = 'Opdateringen fejlede, kontakt venligst xxxxx Sekretariatet.';
      }



  //Har vi en fil?
  if(is_uploaded_file($_FILES['myFile']['tmp_name']))
  {
    //Filendelse
    $extension = getExtension($_FILES['myFile']['name']);
    //Er filen en af de filer vi gerne vil have?
    if(in_array($extension,$allowedFileTypes))
    {
      //Vi flytter filen fra tmp til vores UPLOADDIR
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
            //resizer
        if(resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $logoname , $thumbWidth, $thumbHeight, $thumbQuality)){
                $logoname = $logoname . $extension;
                mysql_query("UPDATE kopi_virksomheder SET logo = '".$logoname."' WHERE id = '".$id."' ") or die(mysql_error());

        header('Location: forside.php?virksomhedsid=' . $id);
        exit();

      }else
            {
              echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') Logo er for lille, minimum 100pX100p</h3>';
                      echo '<br><br>';
                        echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
              echo ' <img src="../images/linkspacer.gif" width="21" height="10">';

            }
    }
    else
    {

        echo '<h3 style="color:red;">Fejl - logoet kunne ikke uploades: '.basename($_FILES['myFile']['name']).'</h3>';
        echo '<br><br>';
        echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
    echo ' <img src="../images/linkspacer.gif" width="21" height="10">';

    }
  }
  else
  {
      echo '<img src="http://xxxxx.dk/images/fejl.jpg"> <h3 style="color:red;">Forkert filtype, tilladte filetyper er: ('.implode(', ',$allowedFileTypes).')</h3>';
      echo '<br><br>';
      echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
      echo '<img src="../images/linkspacer.gif" width="21" height="10">';

  }
}
else
{
  //echo '<h3 style="color:red;">No file selected<h3>';
}



}
}
?>

<html>

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
loadImage1 = new Image();
loadImage1.src = "http://xxxxx.dk/images/q3.jpg";
staticImage1 = new Image();
staticImage1.src = "http://xxxxx.dk/images/q2.jpg";

// End -->
</script>

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
loadImage2 = new Image();
loadImage2.src = "http://xxxxx.dk/images/q3.jpg";
staticImage2 = new Image();
staticImage2.src = "http://xxxxx.dk/images/q2.jpg";

// End -->
</script>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<LINK href="../default.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
function getBynavn()
{
    new Ajax.Request( 'ajax.php', {
        method: 'get',
        parameters: { zipcode: $F('postnr') },
        onComplete: function(transport)
        {
            switch(transport.responseText)
            {
                default:
                    $('bynavn').update(transport.responseText);
            }
        }
    });
}
</script>
</head>
<body class = "xxxxx_body">

<?                                                                                             
require_once("../connect.php");

if(is_numeric($_GET['virksomhedsid']))
{
    $id = intval($_GET['virksomhedsid']);
    $result = mysql_query("SELECT p.navn AS pNavn, v.* FROM kopi_virksomheder AS v INNER JOIN postnumre AS p ON v.postnr = p.nummer WHERE id = '".$id."' LIMIT 1") or die(mysql_error());
    if(mysql_num_rows($result) == 1)
    {
        $row = mysql_fetch_array($result);
        ?>
        <p><span class="blue2">Ret virksomheds Info</span></p>
       
<form action="retvirksomhed.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="id" value="<?php echo $row['id']?>" />

    <table border="0">
       
    <tr><td><span class="blue">Virksomhed:</td><td class="bottomtext"><?php echo $row['navn']?></td></tr>
<tr><td><br></td></tr>

<tr><td><span class="blue">Telefon:</td><td class="bottomtext"><input type="text" maxlength="8" name="telefon1" value="<?php echo ($row['telefon1'] > 0)?$row['telefon1']:'';?>" /></td></tr>
       
        <tr><td><span class="blue">Telefon2:</td><td class="bottomtext"><input type="text" maxlength="8" name="telefon2" value="<?php echo ($row['telefon2'] > 0)?$row['telefon2']:'';?>" /></td></tr>
       
        <tr><td><span class="blue">Fax:</td><td class="bottomtext"><input type="text" maxlength="8" name="fax" value="<?php echo ($row['fax'] > 0)?$row['fax']:'';?>" /></td></tr>
       
        <tr><td><span class="blue">E-mail:</td><td class="bottomtext"><input type="text" name="email" value="<?php echo $row['email']?>" /></td></tr>
       
        <tr><td><span class="blue">Web:</td><td class="bottomtext"><input type="text" name="web" value="<?php echo $row['web']?>" /></td></tr>
       
        <tr><td><span class="blue">Region:</td><td class="bottomtext"><?=regionOptions($row['region']);?></td></tr>
       
        <tr><td><span class="blue">CVR:</td><td class="bottomtext"><input type="text" name="cvr" value="<?php echo ($row['cvr'] > 0)?$row['cvr']:'';?>" /></td></tr>
       
        <tr><td>&nbsp</td></tr>
       
        <tr><td><span class="blue">Branche:</td><td class="bottomtext"><?=brancheOptions($row['branche']);?></td></tr>
       


                <tr><td><span class="blue">Logo:</td><td><input type="file" name="myFile"></td><td><span onmouseover="image2.src=loadImage2.src;" onmouseout="image2.src=staticImage2.src;">
<img name="image2" src="http://xxxxx.dk/images/q2.jpg" onclick="window.open('/update/vejledninger/ret-virksomhed-logo.html','mitvindue', 'width=250,height=300');return false;" border=0></span></td></tr>



                                       
        <tr><td><span class="blue">Antal Medarbejder:</td><td class="bottomtext"><input type="text" name="antalmedarbejder" value="<?php echo $row['antalmedarbejder']?>" /></td></tr>
       
        <tr><td><span class="blue">Virksomhedstype:</td><td class="bottomtext"><?=virksomhedstypeOptions($row['virksomhedstype']);?></td></tr>
       
           
<tr><td><span class="blue">Ønsker <br> nyt Støttebevis: </td><td class="bottomtext"><?=radiobutton('stoettebevis',$row['stoettebevis']);?>&nbsp;&nbsp;

<span onmouseover="image1.src=loadImage1.src;" onmouseout="image1.src=staticImage1.src;">
<img name="image1" src="http://xxxxx.dk/images/q2.jpg" onclick="window.open('/update/vejledninger/ret-virksomhed-stottebevis.html','mitvindue', 'width=250,height=300');return false;" border=0></span>
</td></tr>

        <tr>
                  <td><br>
          </td>
                </tr>
       
       
        </table>
               

<input type="submit"  value="Opdater virksomhed" name="update" />
     
          </form>
            <br><br>
       
                      <span class="blue"><a href="forside.php?virksomhedsid=<?=$id;?>">tilbage</a></span>
                <img src="../images/linkspacer.gif" width="21" height="10">


    <?

    }
    else
    {
        ?>
        <p><span class="blue2">Fejl, virksomhed ikke fundet!</span></p>
        <?
    }
}





?>
</body>
</html>
Avatar billede jakobdo Ekspert
08. januar 2009 - 08:08 #23
Prøv at smid et link til det gif du arbejder med.
Avatar billede axel21 Juniormester
08. januar 2009 - 12:07 #24
Avatar billede jakobdo Ekspert
08. januar 2009 - 12:49 #25
Det er jo underligt, når det virker fint hos mig.
Hvilket jo må betyde du enten gør noget forkert eller har en forkert version af GDLib.
Avatar billede axel21 Juniormester
08. januar 2009 - 12:52 #26
HAr du prøvet at paste mit script ind hos dig? Eller bare som du gjorde før, testede med billedet?
Avatar billede jakobdo Ekspert
08. januar 2009 - 13:10 #27
Jeg bruger denne kode:

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

$img = 'http://www.lollandbib.dk/Billeder/LollandLogo.gif';

function smart_resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false ){
    if ( $height <= 0 && $width <= 0 ){
        return false;
    }

    $info = getimagesize($file);
    $image = '';

    $final_width = 0;
    $final_height = 0;
    list($width_old, $height_old) = $info;

    if ($proportional) {
        if ($width == 0)
            $factor = $height/$height_old;
        elseif ($height == 0)
            $factor = $width/$width_old;
        else
            $factor = min ( $width / $width_old, $height / $height_old); 

        $final_width = round ($width_old * $factor);
        $final_height = round ($height_old * $factor);
    }else{
        $final_width = ( $width <= 0 ) ? $width_old : $width;
        $final_height = ( $height <= 0 ) ? $height_old : $height;
    }

    switch ( $info[2] ) {
        case IMAGETYPE_GIF:
            $image = imagecreatefromgif($file);
            break;
        case IMAGETYPE_JPEG:
            $image = imagecreatefromjpeg($file);
            break;
        case IMAGETYPE_PNG:
            $image = imagecreatefrompng($file);
            break;
        default:
            return false;
    }

    $image_resized = imagecreatetruecolor( $final_width, $final_height );

    if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
        $trnprt_indx = imagecolortransparent($image);

        // If we have a specific transparent color
        if ($trnprt_indx >= 0) {

            // Get the original image's transparent color's RGB values
            $trnprt_color    = imagecolorsforindex($image, $trnprt_indx);

            // Allocate the same color in the new image resource
            $trnprt_indx    = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

            // Completely fill the background of the new image with allocated color.
            imagefill($image_resized, 0, 0, $trnprt_indx);

            // Set the background color for new image to transparent
            imagecolortransparent($image_resized, $trnprt_indx);
        } elseif ($info[2] == IMAGETYPE_PNG) {// Always make a transparent background color for PNGs that don't have one allocated already
            // Turn off transparency blending (temporarily)
            imagealphablending($image_resized, false);

            // Create a new transparent color for image
            $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);

            // Completely fill the background of the new image with allocated color.
            imagefill($image_resized, 0, 0, $color);

            // Restore transparency blending
            imagesavealpha($image_resized, true);
        }
    }

    imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);

    if ( $delete_original ) {
        if ( $use_linux_commands )
            exec('rm '.$file);
        else
            @unlink($file);
    }

    switch ( strtolower($output) ) {
        case 'browser':
            $mime = image_type_to_mime_type($info[2]);
            header("Content-type: $mime");
            $output = NULL;
            break;
        case 'file':
            $output = $file;
      break;
        case 'return':
            return $image_resized;
            break;
        default:
      break;
    }

    switch ( $info[2] ) {
        case IMAGETYPE_GIF:
            imagegif($image_resized, $output);
      break;
        case IMAGETYPE_JPEG:
            imagejpeg($image_resized, $output);
      break;
        case IMAGETYPE_PNG:
            imagepng($image_resized, $output);
      break;
        default:
            return false;
    }

    return true;
}

smart_resize_image($img,50,50,true,'browser');

?>
Avatar billede axel21 Juniormester
08. januar 2009 - 13:44 #28
Jeg har fundet ud af at jeg slet ikke bruger koden som er indsat, den gemmer mit billede med følgende. Hvordan djævlen får jeg det så flettet ind i koden ud ra det jeg har?

<?php
if(isset($_POST['update']) && is_numeric($_POST['id']))
{

include("../connect.php");

//SETTINGS
$logoname = $id . '.'; // hvad skal (thumb) logo ændres til
$uploadDir = '../update/logo/';  //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = '../update/thumbs/';  //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = $id . ' thumb_'; //Hvad skal tilføjes til originalt filnavn? //bruges ikke p.t.(mmk)
$thumbHeight = 100;  //Thumb højde
$thumbWidth = 200;  //Thumb bredde
$thumbQuality = 90;  //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

//Funktioner som bruges:
function getExtension($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}
Avatar billede jakobdo Ekspert
08. januar 2009 - 13:49 #29
Du kalder jo resize() et sted.
Der der skal du så kalde smart_resize_image() i stedet for.
Avatar billede axel21 Juniormester
08. januar 2009 - 13:53 #30
Og dette:

//Har vi en fil?
  if(is_uploaded_file($_FILES['myFile']['tmp_name']))
  {
    //Filendelse
    $extension = getExtension($_FILES['myFile']['name']);
    //Er filen en af de filer vi gerne vil have?
    if(in_array($extension,$allowedFileTypes))
    {
      //Vi flytter filen fra tmp til vores UPLOADDIR
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
            //resizer
        if(resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $logoname , $thumbWidth, $thumbHeight, $thumbQuality)){
                $logoname = $logoname . $extension;
                mysql_query("UPDATE kopi_virksomheder SET logo = '".$logoname."' WHERE id = '".$id."' ") or die(mysql_error());

        header('Location: forside.php?virksomhedsid=' . $id);
        exit();

      }else
            {
              echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') Logo er for lille, minimum 100pX100p</h3>';
                      echo '<br><br>';
                        echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
              echo ' <img src="../images/linkspacer.gif" width="21" height="10">';

            }
    }
    else
    {

        echo '<h3 style="color:red;">Fejl - logoet kunne ikke uploades: '.basename($_FILES['myFile']['name']).'</h3>';
        echo '<br><br>';
        echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
    echo ' <img src="../images/linkspacer.gif" width="21" height="10">';

    }
  }
  else
  {
      echo '<img src="http://xxxxxx.dk/images/fejl.jpg"> <h3 style="color:red;">Forkert filtype, tilladte filetyper er: ('.implode(', ',$allowedFileTypes).')</h3>';
      echo '<br><br>';
      echo '<span class="blue"><a href="retvirksomhed.php?virksomhedsid='.$id.'">tilbage</a></span>';
      echo '<img src="../images/linkspacer.gif" width="21" height="10">';

  }
}
else
{
  //echo '<h3 style="color:red;">No file selected<h3>';
}
Avatar billede axel21 Juniormester
08. januar 2009 - 13:54 #31
Det er altsammen meget fint, men jeg har ikke den mindste idé om hvordan jeg gør dette ud fra det viste.
Avatar billede jakobdo Ekspert
08. januar 2009 - 14:13 #32
Nej, og det er jo netop problemet.
Du spørger til noget kode, får en masse forslag.
Hvorfor roder du med php, når du slet ikke aner noget om det ?
Hvis du så havde en smule gå-på-mod, så ville du komme med nogle forslag og man kunne pege dig i retningen af en løsning.
Men du prøver jo ikke.
Du vil have vi koder det hele for dig.
Avatar billede axel21 Juniormester
02. juli 2010 - 21:58 #33
Smid et svar, ellers bliver tråden lukket...
Avatar billede jakobdo Ekspert
03. juli 2010 - 07:11 #34
Svar!
Avatar billede jakobdo Ekspert
03. juli 2010 - 09:34 #35
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