Avatar billede mpkj Nybegynder
28. september 2009 - 19:01 Der er 11 kommentarer

Hent thumbnail i stedet for stort billede?

Jeg har et joomla modul der går ind og scanner min artikel efter det første billede og det kan jeg så kalde. Problemet er at det første billede i min artikel er meget stort og jeg skalerer det ned via HTML og det går ud over performance. Så nu har jeg fået det lavet sådan at der automatisk bliver lavet en thumbnail af mine billeder, og det vil jeg så kalde i stedet for det store billede.

Her er funktionen der går ind og finder billedet i artiklen:

                [code]if ( preg_match("/GN_image/", $html) ) {
$regex  = "/<img[^>]+src\s*=\s*[\"']\/?([^\"']+)[\"'][^>]*\>/";
$search  = $row->introtext . $row->fulltext;
preg_match ($regex, $search, $matches);
$images = (count($matches)) ? $matches : array();
if ( count($images) ) {
$gn_image  = modGlobalNewsHelper::getGN_Img ( $params, $link, $images[1], 'item' );
}
}[/code]

Jg er ingen ørn, men jeg har slummet mig frem til at regex er det den skal søge efter og $search er hvor den skal søge. Outputtet er så fx:
www.minside.dk/images/news/billede.png

Jeg vil så gerne ændre den url til:
www.minside.dk/images/thumbs/thumb_billede.png

Hvordan gør jeg det?
Avatar billede mpkj Nybegynder
28. september 2009 - 19:03 #1
Sagt med andre ord:

Min $gn_image værdi (www.minside.dk/images/news/billede.png) skal ændres til en anden værdi (www.minside.dk/images/thumbs/thumb_billede.png).
Avatar billede olebole Juniormester
29. september 2009 - 21:30 #2
<ole>

Prøv lige at skrive koden, som du bruger. Den, du skriver i spørgsmålet, kan vist ikke meget andet end udløse fejl  =)

/mvh
</bole>
Avatar billede mpkj Nybegynder
29. september 2009 - 21:44 #3
Hej Ole

Hatten af for din brug af username!

Jeg tror at koden er fint nok; kan det skyldes at jeg har smidt det i [ code ] tags? Jeg prøver lige uden code tags:

if ( preg_match("/GN_image/", $html) ) {
$regex  = "/<img[^>]+src\s*=\s*[\"']\/?([^\"']+)[\"'][^>]*\>/";
$search  = $row->introtext . $row->fulltext;
preg_match ($regex, $search, $matches);
$images = (count($matches)) ? $matches : array();
if ( count($images) ) {
$gn_image  = modGlobalNewsHelper::getGN_Img ( $params, $link, $images[1], 'item' );
}
}

Er det mere læseligt? Ellers paster jeg bare hele indholdet af filen..

Den værdi den gemmer i $gn_image er den værdi som jeg vil ændre:

Nuværende $gn_image værdi: www.minside.dk/images/news/billede.png
Ønskede $gn_image værdi: www.minside.dk/images/thumbs/thumb_billede.png

Du må endelig sige til hvis du skal bruge flere informationer!

Tak,

Kris
Avatar billede olebole Juniormester
29. september 2009 - 22:05 #4
Hehe ... tak  =)

Prøv dette:

$html = "<img src=\"www.minside.dk/images/news/billede.png\">";
$html = preg_replace("#(<img src=('|\"))(.*?/)([a-z0-9_-]*\.[a-z]{3})(\\2>)#", "\\1\\3thumbs/thumb_\\4\\5", $html);
print $html;
Avatar billede mpkj Nybegynder
29. september 2009 - 22:25 #5
Tak for svar.

Problemet er dog at "billede.png" blot var et eksempel. Den lille bid kode går ind og søger i artiklen efter det første billede, som selvfølgelig er forskelligt fra gang til gang.

Så gn_image værdien er: www.minside.dk/images/news/*.*
Den skal ændres til: www.minside.dk/images/thumbs/thumb_*.*

Tricket kunne faktisk være at simpelthen bare erstatte "/news/" med "/thumbs/thumb_" i $gn_image værdien?
Avatar billede olebole Juniormester
29. september 2009 - 22:35 #6
Det kan være bmp, gif, jpg og png  =)

Til gengæld havde jeg ikke set, at news skulle udskiftes med thumbs, så jeg satte bare thumbs i enden af mappestien.

Jeg sidder og laver noget andet, men prøver at se, om jeg når at lave et nyt eksempel senere i aften ... jeg tør dog ikke love noget  =)
Avatar billede olebole Juniormester
29. september 2009 - 22:35 #7
PS: hedder mappen altid news?
Avatar billede olebole Juniormester
29. september 2009 - 22:38 #8
- så fald kan RegExp'en vel skrives som:

$html = preg_replace("#(<img src=('|\"))(.*?/)news/([a-z0-9_-]*\.[a-z]{3})(\\2>)#", "\\1\\3thumbs/thumb_\\4\\5", $html);
Avatar billede olebole Juniormester
29. september 2009 - 22:39 #9
- og hvis *.jpeg også skal understøttes:

$html = preg_replace("#(<img src=('|\"))(.*?/)news/([a-z0-9_-]*\.[a-z]{3,4})(\\2>)#", "\\1\\3thumbs/thumb_\\4\\5", $html);
Avatar billede mpkj Nybegynder
30. september 2009 - 00:24 #10
Rookie, som jeg er, er jeg i tvivl om hvor jeg skal smide linjen?

Der var også en mindre fejl i mine specifikationer, da min thumbnail url ser sådan her ud:

www.minside.dk/images/News/thumbnails/thumb_*.*

Jeg rettede selv i koden du gav mig, men det har ikke rigtig lykkedes.. Jeg gættede selv på at jeg skulle smide den "rettede" linje her:

if ( preg_match("/GN_image/", $html) ) {
$regex  = "/<img[^>]+src\s*=\s*[\"']\/?([^\"']+)[\"'][^>]*\>/";
$search  = $row->introtext . $row->fulltext;
preg_match ($regex, $search, $matches);
$images = (count($matches)) ? $matches : array();
if ( count($images) ) {
$gn_image  = modGlobalNewsHelper::getGN_Img ( $params, $link, $images[1], 'item' );
$html = preg_replace("#(<img src=('|\"))(.*?/)News/([a-z0-9_-]*\.[a-z]{3,4})(\\2>)#", "\\1\\3News/thumbs/thumb_\\4\\5", $html);
}
}

Men den henter stadig de store billeder og ikke thumbnails?

Kris
Avatar billede mpkj Nybegynder
06. oktober 2009 - 20:09 #11
Anyone?

Jeg har prøvet og paste kode ind og ud, men den vil ikke rigtig som jeg vil..
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