Avatar billede woowii Nybegynder
22. oktober 2005 - 02:59 Der er 8 kommentarer og
1 løsning

Billede til sort/hvid

Hej,

Er der nogen der ligger inde med et stykke kode som kan lave farve billeder om til sort/hvid? Jeg har siddet og roddet med noget kode hele aftenen, men jeg kan simpelthen ikke få det til at virke.
Avatar billede jakobdo Ekspert
22. oktober 2005 - 10:05 #1
Du kan evt kigge på imagemagick.
http://www.imagemagick.org/script/convert.php -> monochrome
Avatar billede showsource Seniormester
22. oktober 2005 - 14:58 #2
Avatar billede coderdk Praktikant
22. oktober 2005 - 17:55 #3
De gange jeg har haft brug for det, har jeg brugt et linux command line tool der hedder jpegtran - det kan uden tab rotere, flippe og gøre billeder sort/hvide :)
Avatar billede woowii Nybegynder
22. oktober 2005 - 19:30 #4
Det skal være via php - undskyld hvis jeg ikke fik slået det fast til at starte med. :)

showsource - mja, kan ikke umildbart få det til at virke. Må vidst rodde med det en dag hvor jeg har bedre tid. :)
Avatar billede showsource Seniormester
22. oktober 2005 - 21:33 #5
Det her:

<?php
  // replace with your files
  $originalFileName    = "colorPicture.jpg";
  $destinationFileName = "bwPicture.jpg";
 
  // create a copy of the original image
  // works with jpg images
  // fell free to adapt to other formats ;)
  $fullPath = explode(".",$originalFileName);
  $lastIndex = sizeof($fullPath) - 1;
  $extension = $fullPath[$lastIndex];
  if (preg_match("/jpg|jpeg|JPG|JPEG/", $extension)){
      $sourceImage = imagecreatefromjpeg($originalFileName);
  }

  // get image dimensions
  $img_width  = imageSX($sourceImage);
  $img_height = imageSY($sourceImage);

  // convert to grayscale
  // note: this will NOT affect your original image, unless
  // originalFileName and destinationFileName are the same
  for ($y = 0; $y <$img_height; $y++) {
      for ($x = 0; $x <$img_width; $x++) {
          $rgb = imagecolorat($sourceImage, $x, $y);
          $red  = ($rgb >> 16) & 0xFF;
          $green = ($rgb >> 8)  & 0xFF;
          $blue  = $rgb & 0xFF;

          $gray = round(.299*$red + .587*$green + .114*$blue);
         
          // shift gray level to the left
          $grayR = $gray << 16;  // R: red
          $grayG = $gray << 8;    // G: green
          $grayB = $gray;        // B: blue
         
          // OR operation to compute gray value
          $grayColor = $grayR | $grayG | $grayB;

          // set the pixel color
          imagesetpixel ($sourceImage, $x, $y, $grayColor);
          imagecolorallocate ($sourceImage, $gray, $gray, $gray);
      }
  }

  // copy pixel values to new file buffer
  $destinationImage = ImageCreateTrueColor($img_width, $img_height);
  imagecopy($destinationImage, $sourceImage, 0, 0, 0, 0, $img_width, $img_height);

  // create file on disk
  imagejpeg($destinationImage, $destinationFileName);
 
  // destroy temp image buffers
  imagedestroy($destinationImage); 
  imagedestroy($sourceImage);
?>

virkede for mig med det samme! :O)
Ændrede kun "colorPicture.jpg" til rette fil som skulle være sort/hvid

Billedfiler ligger i samme dir som scriptet.
Avatar billede woowii Nybegynder
23. oktober 2005 - 23:43 #6
Juhuu. Det virker jo. ;)

Smid lige et svar. :)
Avatar billede showsource Seniormester
23. oktober 2005 - 23:49 #7
nej, lav selv et svar og accepter det.
Vil ikke ha' i det her spm. (et link og kode som jeg ikke har brygget sammen!)
Avatar billede showsource Seniormester
23. oktober 2005 - 23:49 #8
ha' point.......
Avatar billede woowii Nybegynder
24. oktober 2005 - 20:54 #9
Javel, som du ønsker. Tak for hjælpen alligevel. :)
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