Avatar billede Authiel Nybegynder
08. oktober 2010 - 09:51 Der er 23 kommentarer og
1 løsning

Runde hjørner på billeder

Hejsa Folkens. Jeg har nu søgt google tyndt uden at finde noget brugbart for mig.

Det jeg er ude efter er et stykke kode som kan lave en "layer-mask", som bliver lagt ind over et billed så det får runde hjørner.

Billedet bliver hentet ind automatisk fra en MySQL database.

Eneste lille side note er at det skal ikke være noget kode som generere et nyt billed (Hvis det er muligt) :D

Håber der er nogle super hoveder der ude som kan hjælpe mig.
Avatar billede repox Seniormester
08. oktober 2010 - 10:22 #1
Brug imagemagick:

    $billede = "original_billede.png";
    $cmd = "convert ".$billede." -matte set runde_hjoerner_maske.png  -compose DstIn -composite ".$billede;
    exec($cmd);
Avatar billede Authiel Nybegynder
08. oktober 2010 - 10:46 #2
#repox: Super kode, nu er mit eneste problem bare at billederne kan have forskellige størrelser. Så umiddelbart så kan en fast maske ikke bruges, da rundingerne skal være den samme på store og på små billeder.
Avatar billede w13 Novice
08. oktober 2010 - 11:02 #3
Jeg mener engang at have forsøgt med: http://www.assemblysys.com/dataServices/php_roundedCorners.php
Måske dur den for dig?
Avatar billede Authiel Nybegynder
08. oktober 2010 - 11:05 #4
Har set på det, men kan ikke bruge det, da jeg ikke må erstatte original billedet med det "nye" billed som har runde hjørner. Hvis jeg bare måtte det ville det være så meget lettere...

Havde selv overvejet noget med at lave 1 div som har runde hjørner i CSS'en og så smide billedet ind i den div gennem et "<img src=...... />" tag. Men er ikke sikker på om den så overskrive det firkantede billed og tvinge den til at vise det med runde hjørner.
Avatar billede Authiel Nybegynder
08. oktober 2010 - 11:41 #5
Jeg er nået så langt som at lave en div box med runnde hjørner, kun bestående af en div, og noget CSS. Men lige så snart at jeg ligger et billed ind i samme størrelse som div'en er så overskriver billedet de runde hjørner... PIV TUD!!!
Avatar billede w13 Novice
08. oktober 2010 - 11:42 #6
Jeg er ret sikker på, at den kode kun viser dig det nygenererede billede. Er du sikker på, at det gamle bliver overskrevet? Jeg tror endda, at man med en ekstra linje kunne få koden til at gemme det nye billede under et andet navn.

CSS-alternativet kunne også være at lave runde hjørner på billederne vha.:

  border-radius: 3px;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;

Det virker dog kun i nye browsere - ældre browsere ville bare vise billederne normalt. Indtil folk tager sig sammen og upgraderer. :)
Avatar billede w13 Novice
08. oktober 2010 - 11:50 #7
Mit CSS-alternativ kræver i øvrigt, at man lægger det direkte på billedet. Ikke på div'en udenom, sådan som det lyder som om du har forsøgt.
Avatar billede Authiel Nybegynder
08. oktober 2010 - 11:52 #8
Du er i sandhed min nye gud w13!!!! I LOOOOOOOOOOOOOOOOVE YOU!!! Har siddet og bakset med det siden igår morges, og den kode du skrev:

border-radius: 3px;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;

fik det hele til at virke præcis som jeg ville have det!

Smid et svar og du skal blive belønnet for din guddommelige viden!
Avatar billede w13 Novice
08. oktober 2010 - 11:59 #9
Hehe. ;) Selv tak.
Avatar billede w13 Novice
08. oktober 2010 - 12:16 #10
Tak for point! :)
Avatar billede Authiel Nybegynder
08. oktober 2010 - 12:23 #11
var så lidt... eneste problem jeg har nu er at hele den virksomhed jeg arbejder for er en microsoft virksomhed, ment på den måde at de bruger EI, og alle deres web-applications er C++ eller C#.. Så den kode du gav mig virker kun i Chrome og FF 4, hvilket de ikke bruger!! TUD! men må lave et eller andet smart..

skal nok lige poste det her når jeg har fået det lavet! :D
Avatar billede w13 Novice
08. oktober 2010 - 13:15 #12
Så tror jeg altså stadig, at du kan bruge den der anden kode. :) Det er PHP og derved Cross-browser. (Hvis din server altså kører PHP, det er jo ikke ligefrem typisk Microsoft. :)

Jeg tror bare, du skal rette 5. sidste linje:

imagejpeg($image);

til:

// Save the image.
imagejpeg($image, "mappe/billede.jpg", 100) or die("Cant save image");

Så retter du bare "mappe/billede.jpg" til den sti, du ønsker. Muligvis vil den have stien med serverpath foran. Men det finder du nok ud af. :) Ellers så bare sig til, og husk at poste eventuelle fejlbeskeder. =)
Avatar billede w13 Novice
08. oktober 2010 - 13:16 #13
Runde hjørner i CSS virker dog i IE9, hører jeg! :)
Avatar billede Authiel Nybegynder
08. oktober 2010 - 13:43 #14
Hehe jeg har løst det.. Som jeg sagde til min chef, så virker de runde hjørner i Chrome og FF 4 beta, men ikke i IE, før om omkring 1 år, men hvis jeg fik en extra dag til at lave hele projektet færdigt i så kunne jeg godt lave en script så det virkede i alle browsere.. Hans svar dertil kom instant og var "Vi lever med kantede hjørner et års tid endnu"

Virker bare epic den måde han sagde det på! HAHA!:D
Avatar billede w13 Novice
08. oktober 2010 - 13:50 #15
Sådan! ;)
Avatar billede sobr Nybegynder
09. oktober 2010 - 11:51 #16
Jeg har leget lidt med det her:

http://www.thesug.org/Blogs/kyles/archive/2009/04/17/Karate_Corners.aspx.aspx

godt nok med en gif med en gennemsigtig cirkel - for du må vel ikke bruge png - eller hvad? for så ville problemet vel være løst.
Avatar billede w13 Novice
09. oktober 2010 - 13:02 #17
Sobr>> Hvorfor skulle man ikke måtte bruge .png? :)
Avatar billede sobr Nybegynder
09. oktober 2010 - 13:46 #18
Fordi png's gennemsigtighed ikke understøttes af ældre browsere (det gennemsigtige blir blåt) - fra IE 7 og op er de ok...
Avatar billede w13 Novice
09. oktober 2010 - 16:28 #19
Jeg tror faktisk, at transparente PNG'er virker, når de sættes som baggrund vha. CSS. Ellers kan man jo bare bruge pngfix.js (http://homepage.ntlworld.com/bobosola/pnghowto.htm), så burde der ingen problemer være i gamle browsere. (Men jeg mener netop, at pngfix løser problemet ved at sætte PNG'er som baggrunde vha. CSS..)
Avatar billede sobr Nybegynder
09. oktober 2010 - 17:54 #20
Ja, det ku jo være super lækkert, hvis man ellers ku få det til at funke - det kan jeg desværre ikke - hverken med css eller pngfix.

Ta' lige selv og prøv og kom med løsningen ;D
Avatar billede w13 Novice
09. oktober 2010 - 17:57 #21
Jeg bruger selv pngfix, når jeg laver hjemmesider, og tester altid i IE6 (vha. www.Browsershots.org), hvor det vises fint.
Avatar billede sobr Nybegynder
11. oktober 2010 - 01:11 #22
Nå W13 - nu har jeg været en tur på Browsershots og har kigget på din side - jeg ser godt nok hjørner på dit fine design - kan også se at kaldet til javascriptet ligger i body (jeg har læst at det skal ligge i head).
Men jeg har også surfet en del rundt på nettet og afprøvet forskellige pngfix og det bedste jeg fandt var her:

http://dillerdesign.com/experiment/DD_belatedPNG/

med denne kan man positionere en png baggrund i css, det kunne man ikke med alle de andre fix.
Avatar billede w13 Novice
11. oktober 2010 - 08:22 #23
Mit pngfix blev nødt til at ligge nederst i <body>, for ellers kørte det nogle gange for tidligt og fik ikke de fleste png-billeder med.

Det fungerer sådan, at jeg bruger png-billeder helt normalt og sætter siden op, så den ser fin ud i mine nye browsere, og så indsætter jeg png-fix nederst i body, som automatisk får det til at virke i IE6. Så positionering o. lign. gør jeg helt selv i min CSS, ligesom jeg ville have gjort med jpeg-billeder.
Avatar billede Authiel Nybegynder
11. oktober 2010 - 08:47 #24
Kan se at i har en del snakken omkring alt det her. Hvis det skulle være af interesse så laver jeg en function som laver de runde hjørner for mig på alle billeder, Uanset størrelse på billedet. Er det noget jeg skal smide op når den er færdig? :D
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