Avatar billede hanshenp Nybegynder
23. marts 2003 - 18:45 Der er 31 kommentarer og
1 løsning

gdlib... lig billede oven på billeder

Jeg står med et problem, jeg vil gerne når jeg har uploaded et billede, have gjort dette billedes hjørner runde, og derefter have lagt en kan på billedet hele vejen rundt... min første indskydelse var først at ligge en kant på billedet, hvorefter man ligger et billede som man har liggede ind i hvert hjørne, så den bliver afrundet...

Jeg ved ikke om dette kan lade sig gøre, men vil da blive glad hvis det kan:

/Hans Henrik Petersen
Avatar billede angelod Novice
23. marts 2003 - 21:43 #1
Under disse afrundede hjørner, vil du da have en bestemt baggrundsfarve, eller skal det være gennemsigtigt? Gennemsigtighed kan nemlig være ret tricky at arbejde med.
Avatar billede hanshenp Nybegynder
23. marts 2003 - 23:28 #2
Det skal bare være hvid...
Avatar billede angelod Novice
23. marts 2003 - 23:32 #3
Okay. Jeg laver lige en prøve til dig. :o)
Avatar billede hanshenp Nybegynder
23. marts 2003 - 23:33 #4
det lyder bare godt :)
Avatar billede angelod Novice
24. marts 2003 - 00:22 #5
Jeg formoder at du kan de mest basale ting, som f.eks. at gemme billederne osv, eller at du i hvert fald kan finde ud af at kigge i manualen efter dem. ;)

Jeg skriver et eksempel der henter et billede lokalt, laver en ramme og afrundede hjørner, og derefter viser det i browseren. :)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 00:26 #6
jeg kan godt finde ud af at gemme billederne og såen... når du siger lokalt, mener du så at du vil hente billedet, og derefter bearbejde billedet via java el lign ?
Avatar billede angelod Novice
24. marts 2003 - 00:29 #7
Nej nej, jeg mener blot at jeg ligger billedet på serveren, og laver ikke et upload script. Jeg formoder jo at det er det med de afrundede hjørner der volder dig problemer. :o)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 00:40 #8
det er helt korrekt antaget :)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 00:41 #9
har lavet en hjemmeside, som er 100% dynamisk, og som er designet til at "hovedbilleder" skal være afrundede med kant, og det skal gerne være, så brugeren ikke selv skal gøre det
Avatar billede angelod Novice
24. marts 2003 - 00:44 #10
Okay.. Jeg laver det sådan at det ikke bruger TrueColor billeder, hvilket gør det noget grimt (med mindre man foretager en farvetuning, og det gør jeg ikke lige her, da det jo kun er et princip).

Er næsten færdig. :o)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 00:53 #11
hehe... en colortuning, ved jeg så ikke hvad er... men det er fint nok at du ikke bruger truecolor, jeg har ikke rådighed over GDlib 2+ alligevel
Avatar billede angelod Novice
24. marts 2003 - 00:55 #12
En skam.. Det er ellers yderst lækkert. :)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 00:56 #13
jeps, har arbejdet lidt med det... resample, og truecolor er utrolig dejlige
Avatar billede angelod Novice
24. marts 2003 - 01:04 #14
Det er jo muligt at lave sin egen resample funktion der virker med de "dårlige" billeder. Man kan basere det på en af de utallige algoritmer der findes derude. Jeg lavede en til arbejdet som benytter Bicubic Resampling. Jeg har set andre som har gjort det samme. :)

Anyhow, kig lige på:
  http://www.tv2nord-digital.dk/test/wolf.jpg
Og derefter på:
  http://www.tv2nord-digital.dk/test/gdtest1.php

Var det ikke noget i den retning (som sagt er paletten ikke optimeret)? :o)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 01:07 #15
jeps, det er lige præcis sådan, det ser nice ud, men du har ret i at billedet bliver noget uskarpt... har du også en ide til hvorledes jeg laver en sort kant på billedet, som følger linjen rundt
Avatar billede angelod Novice
24. marts 2003 - 01:09 #16
Kan du eventuelt forklare det på en anden måde? Jeg har lavet det som jeg tror du mener det (kig på PHP filen igen).
Avatar billede hanshenp Nybegynder
24. marts 2003 - 01:12 #17
der skal på billedet være en kant, kanten skal være lign. den som fremkommer når man i CSS benytter sig af style="border: 1 solid #000000" den skal bare følge med buen rundt i stedet for at gå hele vejen op
Avatar billede angelod Novice
24. marts 2003 - 01:12 #18
Hovsa.. Glemte at uploade.. Okay, nu er den der.
Avatar billede hanshenp Nybegynder
24. marts 2003 - 01:17 #19
det der er faktisk også pænt, kan i min formulering godt forstå du misforstår mig...

jeg har lagt et eksempel på hvad jeg mener op her: http://www.stenovnsbyg.dk/test.jpg
Avatar billede angelod Novice
24. marts 2003 - 01:20 #20
Nåååeh! Jo giv mig lige lidt tid, så skal jeg ombygge koden. ;)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 01:20 #21
jeg har masser af tid... håber ikke jeg har været dig for besværlig...
Avatar billede angelod Novice
24. marts 2003 - 01:23 #22
*GG* Nej da. Det er faktisk ret sjovt det her. Jeg elsker at lege med GD Lib. :)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 01:26 #23
er jeg da glad for at høre... jeg kender ikke så meget til det... ved du hvor jeg finder en manual ?
Avatar billede angelod Novice
24. marts 2003 - 01:29 #24
Manualen til brug af GD Lib i PHP ligger her:
  http://dk.php.net/manual/en/ref.image.php
Avatar billede angelod Novice
24. marts 2003 - 01:56 #25
Godt nok. Kig så igen og se om det ikke er det du mener (jeg har lavet den Fuchsia så den er nemmere at se på det valgte billede. :o) )
Avatar billede angelod Novice
24. marts 2003 - 02:03 #26
Jeg kigger lige på mulighederne for at optimere farverne. :o)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 02:20 #27
det lyder bare helt fint
Avatar billede angelod Novice
24. marts 2003 - 03:01 #28
Nåh.. Men det kan jeg ikke lige få til at virke lige nu. Her er koden. Du kan evt. selv lege lidt med den:

<?php
  // Get time
  $startTime = time();
 
  // Find out what we've chosen
  if (isset($_GET['img'])) {
    if (file_exists($_GET['img'] . '.jpg')) {
      $fname = $_GET['img'] . '.jpg';
    } else {
      $fname = 'wolf.jpg';
    }
  } else {
    $fname = 'wolf.jpg';
  }
 
  // Load main picture
  $imgMain = ImageCreateFromJPEG($fname);
 
  // Generate corners
  // Top left
  $imgTopLeft = ImageCreate(8, 8);
  $colBG = ImageColorAllocate($imgTopLeft, 255, 255, 255);
  $colBlack = ImageColorAllocate($imgTopLeft, 0, 0, 0);
  ImageFilledArc($imgTopLeft, 8,8, 16,16, 180,270, $colBlack, IMG_ARC_PIE);
  ImageColorTransparent($imgTopLeft, $colBlack);
 
  // Top right
  $imgTopRight = ImageCreate(8, 8);
  $colBG = ImageColorAllocate($imgTopRight, 255, 255, 255);
  $colBlack = ImageColorAllocate($imgTopRight, 0, 0, 0);
  ImageFilledArc($imgTopRight, 0,8, 16,16, 270,0, $colBlack, IMG_ARC_PIE);
  ImageColorTransparent($imgTopRight, $colBlack);
 
  // Bottom left
  $imgBottomLeft = ImageCreate(8, 8);
  $colBG = ImageColorAllocate($imgBottomLeft, 255, 255, 255);
  $colBlack = ImageColorAllocate($imgBottomLeft, 0, 0, 0);
  ImageFilledArc($imgBottomLeft, 8,0, 16,16, 90,180, $colBlack, IMG_ARC_PIE);
  ImageColorTransparent($imgBottomLeft, $colBlack);
 
  // Bottom right
  $imgBottomRight = ImageCreate(8, 8);
  $colBG = ImageColorAllocate($imgBottomRight, 255, 255, 255);
  $colBlack = ImageColorAllocate($imgBottomRight, 0, 0, 0);
  ImageFilledArc($imgBottomRight, 0,0, 16,16, 0,90, $colBlack, IMG_ARC_PIE);
  ImageColorTransparent($imgBottomRight, $colBlack);
 
  // Construct final image
  $imgSizeX = ImageSX($imgMain);
  $imgSizeY = ImageSY($imgMain);
  $imgOutput = ImageCreate($imgSizeX, $imgSizeY);
 
  // Allocate colours
  $colBG = ImageColorAllocate($imgOutput, 255, 255, 255);
  $colBlack = ImageColorAllocate($imgOutput, 0, 0, 0);
  $colGreen = ImageColorAllocate($imgOutput, 255, 0, 255);
 
  // Gather the picture
  ImageCopy($imgOutput, $imgMain, 0,0, 0,0, $imgSizeX,$imgSizeY);
  ImageCopy($imgOutput, $imgTopLeft, 0,0, 0,0, 8,8);
  ImageCopy($imgOutput, $imgTopRight, $imgSizeX-8,0, 0,0, 8,8);
  ImageCopy($imgOutput, $imgBottomLeft, 0,$imgSizeY-8, 0,0, 8,8);
  ImageCopy($imgOutput, $imgBottomRight, $imgSizeX-8,$imgSizeY-8, 0,0, 8,8);
 
  // Draw border
  ImageArc($imgOutput, 8,8, 16,16, 180,270, $colGreen);
  ImageArc($imgOutput, $imgSizeX-8,8, 16,16, 270,0, $colGreen);
  ImageArc($imgOutput, 8,$imgSizeY-8, 16,16, 90,180, $colGreen);
  ImageArc($imgOutput, $imgSizeX-8,$imgSizeY-8, 16,16, 0,90, $colGreen);
  ImageLine($imgOutput, 0,8, 0,$imgSizeY-8, $colGreen);
  ImageLine($imgOutput, 8,0, $imgSizeX-8,0, $colGreen);
  ImageLine($imgOutput, 8,$imgSizeY-1, $imgSizeX-8,$imgSizeY-1, $colGreen);
  ImageLine($imgOutput, $imgSizeX-1,8, $imgSizeX-1,$imgSizeY-8, $colGreen);
 
  ImageDestroy($imgMain);
  ImageDestroy($imgTopLeft);
  ImageDestroy($imgTopRight);
  ImageDestroy($imgBottomLeft);
  ImageDestroy($imgBottomRight);
 
  // Display Creation time
  $endTime = time();
  $totalTime = $endTime - $startTime;
  ImageString($imgOutput, 3, 10,10, "Total time: $totalTime second(s)", $colGreen);
 
  header("Content-type: image/png");
  ImagePNG($imgOutput);
 
  ImageDestroy($imgOutput);
?>
Avatar billede angelod Novice
24. marts 2003 - 03:03 #29
Og $colGreen er ikke grøn lige der, da Fuchsia passede bedre. ;)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 03:04 #30
hehe, det er helt iorden, du skal have mange tak for hjælpen...

men som jeg ser det, så virker den da på din ulv, med den lilla farve
Avatar billede angelod Novice
24. marts 2003 - 03:08 #31
Ja, men på mange billeder bliver farverne virkelig dårlige.. Det kan godt være fordi jeg tester på en server der kører GDLib 2.. Men held og lykke med det da. Takker for point. ;)
Avatar billede hanshenp Nybegynder
24. marts 2003 - 03:11 #32
Tak skal du have... det er skam mig der takker for hjælpen... og du må sove godt
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