Avatar billede cronick Nybegynder
27. juni 2006 - 01:52 Der er 40 kommentarer og
1 løsning

Er det mon muligt (billede i assoc)?

Hej,
tænkte på, hvis man har følgende lille kode, som udskriver fra rækker i en tabel, om man så kan lave en if, hvis billeder:
------------
$hent = mysql_query("SELECT * ....");
$vis = mysql_fetch_assoc($hent);
------------
Kan man så lave en if (hvis der kommer et <img src="...">, og så lave en afgrænsning af dens højde/bredde hvis større end det jeg maksimalt tillader?
Eks:
if(img_height($vis) > 200) {
$new_height = 200;
$new_width = 200;
}

- På forhånd tak..
Avatar billede jakobdo Ekspert
27. juni 2006 - 08:36 #1
Det kan du godt ja.
Men ville det ikke være smartest at lave en resize af billedet inden det bliver smidt i databasen evt?
Avatar billede cronick Nybegynder
27. juni 2006 - 20:01 #2
Ehm, nej.. For billedet skal kunne efterfølgende åbnes i et nyt vindue (rigtig størrelse), og desuden er det tekst og billeder i den celle, jeg udskriver fra "nyhed".. Og de billeder er muligvis ikke mine egne (uploadet på min server), men kan også bare være nogle links til andres billeder..
Avatar billede jakobdo Ekspert
27. juni 2006 - 20:06 #3
Ok! Så kan du godt lave resize on-the-fly.
Avatar billede cronick Nybegynder
27. juni 2006 - 20:17 #4
Okay, det må du jo så gerne lige vise, hvis du vil .. :)
Avatar billede jakobdo Ekspert
27. juni 2006 - 20:31 #5
Hvilken slags filer snakker vi?
Avatar billede cronick Nybegynder
27. juni 2006 - 20:46 #6
Øhm; jpg, gif, png, bmp?
Avatar billede jakobdo Ekspert
27. juni 2006 - 20:57 #7
bmp er lidt besværlig, resten er nemt nok.
Avatar billede cronick Nybegynder
27. juni 2006 - 21:03 #8
Iorden, så for de andre.. (:
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:03 #9
Prøv at kig på denne kode:

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

function resize( $srcim, $ratio )
{
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $nw = round( $ow * $ratio, 0 );
        $nh = round( $oh * $ratio, 0 );
        $dstim = imagecreatetruecolor( $nw, $nh );
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
        return $dstim;
}

function LoadJpeg($imgname)
{
        $im = @imagecreatefromjpeg($imgname); /* Attempt to open */
        if(!$im)
        {
                /* See if it failed */
                $im  = imagecreatetruecolor(100, 20); /* Create a black image */
                $bgc = imagecolorallocate($im, 239, 239, 239);
                $tc  = imagecolorallocate($im,  0,  0,  0);
                imagefilledrectangle($im, 0, 0, 100, 20, $bgc);
                /* Output an errmsg */
                imagestring($im, 1, 5, 5, "Error loading jpeg", $tc);
        }
        return $im;
}

header("Content-type: image/jpeg");
$myImage = LoadJpeg($_GET['filename']);
switch($_GET['size'])
{
        case 1:
                $myImage = resize($myImage,0.25);
                break;
        case 2:
                $myImage = resize($myImage,0.50);
                break;
        case 3:
                $myImage = resize($myImage,0.75);
                break;
        default:
}
imagejpeg($myImage, NULL, 100);
imagedestroy($myImage);

?>
Avatar billede cronick Nybegynder
27. juni 2006 - 21:08 #10
Hvordan kan den hægtes sammen med uddrag af tekst og html-koder til billeder, i en celle? :)
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:29 #11
Kan du slet ikke kode selv? :o)
Avatar billede cronick Nybegynder
27. juni 2006 - 21:35 #12
Du vil måske lige læse mit spørgsmål igen, i det første indlæg. Jeg er ikke ude efter en lang gdlib-kode, men en kode som gør man kan udskille "<img src="url her">" og vælge deres maxstørrelse, ud af en assoc ($vis[nyhed]) ..
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:41 #13
Jo, men det er jo bare dybt godnat at lave det på den måde.
At hente et billede på 1600*1200 fylder stadig hvad det gør.
Du vil så kun vise det som f.eks. 200*150
Men fair nok, jeg giver op så.
Avatar billede cronick Nybegynder
27. juni 2006 - 22:02 #14
Jaeh, det er fint.. Men lad mig da bare hente dem i normal størrelse.. Jeg skal bruge den kode jeg bad om, ikke noget andet, som muligvis kan forbedre det.. Først skal man jo have selve grundpælen, ikke?
Avatar billede jakobdo Ekspert
28. juni 2006 - 08:37 #15
Jo, du har ret, var bare lidt træt i går! :o)
Har du gemt størrelsen på billederne i databasen?
Avatar billede cronick Nybegynder
29. juni 2006 - 21:44 #16
Nej - Igen, er det jo billeder som ikke bliver uploadet eller noget, da de bliver sat ind i en textarea-kasse, med <img src="billedeurl.gif">. Såeh, det er ikke engang sikkert de ligger på min egen server, men det er meget sandsynligt. :)
Avatar billede jakobdo Ekspert
29. juni 2006 - 21:52 #17
Du kan måske bruge getimagesize() til at finde størrelsen på et billede.
Avatar billede cronick Nybegynder
29. juni 2006 - 21:57 #18
Jo tak, så meget ved jeg.. (: .. Men hvordan vil du hente billeder fra en celle, hvor der både er tekst, html-koder (der i blandt <img src="">)?

Det vil altså sige, jeg har et udtog fra cellen her: $vis[nyhed], og når der i den lille "kode" kommer <img src=""> så skal den tage den url der står, og hente img-size, og samtiddig lave, så den bliver udskrevet med det..
Avatar billede jakobdo Ekspert
29. juni 2006 - 22:18 #19
Prøv f.eks. denne kode:

if(preg_match_all('/<img[^>]+src="(.+?)".*>/', $din_tekst_fra_databasen, $match))
{
echo '<pre>';
print_r($match);
echo '</pre>';
}
Avatar billede cronick Nybegynder
29. juni 2006 - 22:27 #20
Okay, det var da smart nok.. Men hvordan får jeg det så lige til at stadig være inde i selve "$vis[nyhed]",, eller f.eks. $nyhed? For det skulle jo gerne komme i den rækkefølge det ligger i cellen..
Avatar billede jakobdo Ekspert
30. juni 2006 - 08:16 #21
while($vis = mysql_fetch_assoc(....))
{
if(preg_match_all('/<img[^>]+src="(.+?)".*>/', $vis[nyhed], $match))
{
echo '<pre>';
print_r($match);
echo '</pre>';
}
}
Avatar billede cronick Nybegynder
30. juni 2006 - 13:37 #22
Ikke lige på dén måde.. Altså.. Jeg udskriver denne "kode" ($nyhed), og KUN den.. Og det skal ændres inde i den kode, nogenlinde ligesom f.eks: $nyhed = str_replace("<img src=(?*)>","<img src=(?*) width=350>",$nyhed);

- Hvis du forstår..?
Avatar billede jakobdo Ekspert
30. juni 2006 - 14:01 #23
Prøv at giv mig et eksempel.
F.eks. noget i stil med:
Jeg har dette: <img src="billede">
Jeg ønsker det skal konverteres til: ????
Avatar billede cronick Nybegynder
30. juni 2006 - 15:23 #24
Jeg har dette et sted i min "$nyhed": <img src="billede">. Det vil jeg gerne have skal erstattes med: <?
$stoerrelse = getimagesize("Billedets url skal ind her");
$bredde = $stoerrelse[0];
$hoejde = $stoerrelse[1];
echo "<a href=\"#\" onclick=\"java script:popupwindow('vis_billed.php?url=billedets url her','vindue','width=<? echo $bredde; ?>,height=<? echo $hoejde; ?>,resizable=0,scrollbars=0')\"><img src=\"billedets url her\" border=\"0\"></a>

Det virker måske lidt uoverskueligt, men det er lige det bedste jeg kan give..
Avatar billede jakobdo Ekspert
02. juli 2006 - 15:46 #25
Avatar billede jakobdo Ekspert
02. juli 2006 - 15:48 #26
Og dog, der mangler lige lidt mere...
Avatar billede cronick Nybegynder
02. juli 2006 - 15:53 #27
Ja, der mangler vidst lige det, med at den skal lave størrelse.. Hvis den er størrer (bredde) end 350, så skal den laves til 350.. :)
Avatar billede jakobdo Ekspert
02. juli 2006 - 16:23 #28
Refresh koden, så tror jeg den er der.
Avatar billede cronick Nybegynder
02. juli 2006 - 17:35 #29
Ja, mange tak.. Så fik vi det endelig sat helt right.. :)
- Hvis du lige kommer med et svar? :)
Avatar billede jakobdo Ekspert
02. juli 2006 - 17:44 #30
Svar!
Avatar billede jakobdo Ekspert
02. juli 2006 - 19:31 #31
Takker for point.
Avatar billede cronick Nybegynder
02. juli 2006 - 21:05 #32
Så lidt da.. Tænkte på.. Du har givet mig denne:

$artikel = preg_replace_callback('/<img.*src=("|\')(.*?)("|\').*?>/i','replaceImage',$artikel);

Hvordan skal den se ud, hvis der ikke skal være " " rundt om url'en?
Avatar billede jakobdo Ekspert
02. juli 2006 - 21:29 #33
Virker den ikke korrekt eller hvad mener du?
Avatar billede cronick Nybegynder
02. juli 2006 - 22:24 #34
Joeh, men skal bruge den, til både hvor der er med "" og hver der ikke er.. ;)
Avatar billede jakobdo Ekspert
03. juli 2006 - 08:01 #35
Prøv at ret regexp til: '/<img.*?src=([^\\s>]*)/i'
Avatar billede cronick Nybegynder
03. juli 2006 - 09:14 #36
Kan du ikke lige skrive den helt? Jeg har nemlig fået den til dette, og det virker ikke:
$text = preg_replace_callback('/<img.*?src=([^\\s>]*)/i','replaceImage',$text);
Avatar billede jakobdo Ekspert
03. juli 2006 - 09:33 #37
Refresh koden på linket: http://www.codebreaker.dk/exp/717772.php
Så har du en løsning.
Avatar billede cronick Nybegynder
03. juli 2006 - 09:39 #38
Eh, ja.. Men.. Det er kun denne kode jeg skal indsætte, f.eks. under den anden, ikke?
$newtext = preg_replace_callback('/<img.*?src=([^\\s>]*)/i','replaceImage',$text);

- Men, den virker ikke.. Der kommer ikke billede.. Men et "kunne ikke vises-billede" med et >-tegn bagefter..
Avatar billede jakobdo Ekspert
03. juli 2006 - 09:45 #39
Se nu hele min kode.
Dit problem er du ikke forstår hvad koden gør, og derfor kan du ikke selv tænke en lille smule.
Men prøv nu hele koden, der er rettet flere steder.
Avatar billede cronick Nybegynder
03. juli 2006 - 16:19 #40
Jom, okay.. Det er bare fordi, at det skal være på samme side.. Altså den der $nyhed skal både være med "" og uden.. Derfor er det lidt problematisk med den samme function til de to, når de ikke passer til hinanden..
Avatar billede jakobdo Ekspert
03. juli 2006 - 17:51 #41
Den sidste kode jeg har lavet skulle gerne virke til alle sammen.
<img src="http://www.side.dk/billede.jpg">
<img src='http://www.side.dk/billede.jpg'>
<img src=http://www.side.dk/billede.jpg>
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