Vignettes photos rectangulaires et non carrés

ddd
Eléphanteau du PHP | 13 Messages

15 févr. 2011, 17:05

Bonjour à tous,!
Petit problème à résoudre:
J'utilise le pluging "Djuve" permettant d'avoir un système de présentation photos avec vignettes.

<?php if (!defined('SITE')) exit('No direct script access allowed');

/**
* Djuve
*
* Exhibition format
* 
* @version 0.1 (experimental copy&paste)
* @author Kjetil Djuve (http://www.kjetildjuve.com/)
* @based on/mix of: Vaska's Iwakami/Backgrounded/Deux Column Exhibition formats (http://indexhibit.org/)
*/


// defaults from the general libary - be sure these are installed
$exhibit['dyn_css'] = dynamicCSS();
$exhibit['dyn_js'] = dynamicJS();
$exhibit['exhibit'] = createExhibit();

function dynamicJS()
{
	return "function show_image(id)
	{
		
		$('.pic').hide();
		$('#p' + id).fadeIn();
		return false;
	}";
}

function createExhibit()
{
	$OBJ =& get_instance();
	global $rs;
	
	$pages = $OBJ->db->fetchArray("SELECT * 
		FROM ".PX."media, ".PX."objects_prefs 
		WHERE media_ref_id = '$rs[id]' 
		AND obj_ref_type = 'exhibit' 
		AND obj_ref_type = media_obj_type 
		ORDER BY media_order ASC, media_id ASC");
		
				// content text
    

	if (!$pages) return $s;
	
	$i = 1; $a = ''; $b = '';
	
	$total = count($pages);
			
	// people will probably want to customize this up
	foreach ($pages as $go)
	{
	    $title 		= ($go['media_title'] == '') ? '' : $go['media_title'] . '&nbsp;';
	    $caption 	= ($go['media_caption'] == '') ? '&nbsp;' : $go['media_caption'];
		
		$png		= ($go['media_mime'] == 'png') ? " class='png'" : '';
		
		$a .= "\n<a href='#' onclick=\"show_image($i);return false;\"><img src='" . BASEURL . GIMGS . "/sys-$go[media_file]' alt='$caption' title='$title' id='img$i'$png /></a>\n";

		$x = getimagesize(DIRNAME . GIMGS . '/' . $go['media_file']);
		
		$off = ($i == 1) ? "style='display: block;'" :  "style='display: none;'";
		
		$next = ($i == $total) ? 1 : $i+1; 
		
		$b .= "\n<div id='p$i' class='pic' $off><a href='#' onclick=\"show_image($next); return false;\"><img src='" . BASEURL . GIMGS . "/$go[media_file]' width='" . $x[0] . "' height='" . $x[1] . "' class='img-bot' /></a><p><djuvetitreleg>{$title}</djuvetitreleg><br />{$caption}</p></div>\n";
		
		$i++;
	}
			// image
	$s .= "<div id='d-image'>\n";
	$s .= $b;
	$s .= "</div>\n";
	$s .= "</div>\n\n";
	

	
		
			// thumbs
	$s .= "<div id='img-container'>\n";
	$s .= "<div id='d-thumbs'>\n";
	$s .= $a;
	$s .= "</div>\n";
	$s .= "<div  id='text'>";
	$s .= $txt;
	$s .= "</div>\n";
	// exhibition text make sure process html switch is off - use .css to define 'info' and 'info' class
	$s .= "<div  id='info'; class='info'>".$rs['content'] ;
	$s .= "</div>\n";
	
	
	$s .= "<div class='clear-both'><!-- --></div>\n\n";
			

	
	return $s;
	
	
}


function dynamicCSS()
{
    return "#d-image img {border: 0px solid #f2f2f2; margin: 9px 0px 0px 0px; }
    #d-thumbs { margin: 0px 0px 0px 0px;}
    #d-thumbs img {padding: 0; border: none; height: 40px; width: 40px; }
    #d-image { };
	#text { margin-left: 1em; float: right; width: 200px; }";
	#info {width: 800; border: none;}
}



?>



Ce plugging génère des vignettes carrées (ex; http://www.juliedebieve.com/index.php?/ ... /creation/ ), mais je souhaite avoir des vignettes de taille rectangulaire

lorsque je modifie le code Css:

Code : Tout sélectionner

#d-thumbs img {padding: 0; border: none; height: 40px; width: 40px; }
en

Code : Tout sélectionner

#d-thumbs img {padding: 0; border: none; height: 40px; width: auto; }
les vignettes restent carrées ?!

par contre en utilisant le code:

Code : Tout sélectionner

#d-thumbs img {padding: 0; border: none; height: 40px; width: 80px; }
les images des vignettes sont écrasées et étirées mais j'obtiens des rectangle.

Comment faire pour obtenir des rectangles, qui même si leurs tailles n'est pas proportionnel à celles des photos d'origine permettant d'avoir des vignettes non déformées. En faite j'aimerais le même principe qu'avec les carrés sauf que ce sont des rectangles.

Faut-il changer quelque chose dans le code php ?
Merci pour votre réponse

Mammouth du PHP | 672 Messages

15 févr. 2011, 17:16

Bonjour.

Je suppose que les vignettes sont générées par le script ?

=> Question con : tu as regardé comment sont les vignettes ?
Parce que vu ce que tu dis, il y a fort à parier que les vignettes crées sont carrées. Ce qui est courant, puisque ça permet de s'assurer que le rendu soit toujours le même, que l'image de départ soit horizontale ou verticale...

ViPHP
xTG
ViPHP | 7331 Messages

15 févr. 2011, 17:32

D'autant plus que quand on regarde l'application que tu souhaites en faire cela se fait sur des images diverses et variés en proportion (rectangle horizontal, vertical, carré).
Je ne quitterai pas le mode carré pour une telle gestion ou sinon tu risques d'avoir une gallerie de vignettes assez difforme.