Votre question

Vignettes photos rectangulaires et non carrés

Tags :
  • photo
  • Programmation
Dernière réponse : dans Programmation
15 Février 2011 16:14:47


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

  1. <?php if (!defined('SITE')) exit('No direct script access allowed');
  2.  
  3. /**
  4. * Djuve
  5. *
  6. * Exhibition format
  7. *
  8. * @version 0.1 (experimental copy&paste)
  9. * @author Kjetil Djuve (http://www.kjetildjuve.com/)
  10. * @based on/mix of: Vaska's Iwakami/Backgrounded/Deux Column Exhibition formats (http://indexhibit.org/)
  11. */
  12.  
  13.  
  14. // defaults from the general libary - be sure these are installed
  15. $exhibit['dyn_css'] = dynamicCSS();
  16. $exhibit['dyn_js'] = dynamicJS();
  17. $exhibit['exhibit'] = createExhibit();
  18.  
  19. function dynamicJS()
  20. {
  21. return "function show_image(id)
  22. {
  23.  
  24. $('.pic').hide();
  25. $('#p' + id).fadeIn();
  26. return false;
  27. }";
  28. }
  29.  
  30. function createExhibit()
  31. {
  32. $OBJ =& get_instance();
  33. global $rs;
  34.  
  35. $pages = $OBJ->db->fetchArray("SELECT *
  36. FROM ".PX."media, ".PX."objects_prefs
  37. WHERE media_ref_id = '$rs[id]'
  38. AND obj_ref_type = 'exhibit'
  39. AND obj_ref_type = media_obj_type
  40. ORDER BY media_order ASC, media_id ASC");
  41.  
  42. // content text
  43.  
  44.  
  45. if (!$pages) return $s;
  46.  
  47. $i = 1; $a = ''; $b = '';
  48.  
  49. $total = count($pages);
  50.  
  51. // people will probably want to customize this up
  52. foreach ($pages as $go)
  53. {
  54. $title = ($go['media_title'] == '') ? '' : $go['media_title'] . ' ';
  55. $caption = ($go['media_caption'] == '') ? ' ' : $go['media_caption'];
  56.  
  57. $png = ($go['media_mime'] == 'png') ? " class='png'" : '';
  58.  
  59. $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";
  60.  
  61. $x = getimagesize(DIRNAME . GIMGS . '/' . $go['media_file']);
  62.  
  63. $off = ($i == 1) ? "style='display: block;'" : "style='display: none;'";
  64.  
  65. $next = ($i == $total) ? 1 : $i+1;
  66.  
  67. $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";
  68.  
  69. $i++;
  70. }
  71. // image
  72. $s .= "<div id='d-image'>\n";
  73. $s .= $b;
  74. $s .= "</div>\n";
  75. $s .= "</div>\n\n";
  76.  
  77.  
  78.  
  79.  
  80. // thumbs
  81. $s .= "<div id='img-container'>\n";
  82. $s .= "<div id='d-thumbs'>\n";
  83. $s .= $a;
  84. $s .= "</div>\n";
  85. $s .= "<div id='text'>";
  86. $s .= $txt;
  87. $s .= "</div>\n";
  88. // exhibition text make sure process html switch is off - use .css to define 'info' and 'info' class
  89. $s .= "<div id='info'; class='info'>".$rs['content'] ;
  90. $s .= "</div>\n";
  91.  
  92.  
  93. $s .= "<div class='clear-both'><!-- --></div>\n\n";
  94.  
  95.  
  96.  
  97. return $s;
  98.  
  99.  
  100. }
  101.  
  102.  
  103. function dynamicCSS()
  104. {
  105. return "#d-image img {border: 0px solid #f2f2f2; margin: 9px 0px 0px 0px; }
  106. #d-thumbs { margin: 0px 0px 0px 0px;}
  107. #d-thumbs img {padding: 0; border: none; height: 40px; width: 40px; }
  108. #d-image { };
  109. #text { margin-left: 1em; float: right; width: 200px; }";
  110. #info {width: 800; border: none;}
  111. }
  112.  
  113.  
  114.  
  115. ?>




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

lorsque je modifie le code Css:

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


en

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


les vignettes restent carrées ?!

par contre en utilisant le code:

  1. #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



Autres pages sur : vignettes photos rectangulaires carres

a c 232 L Programmation
a b w Photo
15 Février 2011 20:12:57

Salut,

Ton code ne génère pas de vignettes, il les affiche seulement.
Du coup c'est pas avec ça qu'on pourra t'aider.
m
0
l
15 Février 2011 23:37:02

salut Omar,

hum... si ce n'est pas dans ce code-ci, je ne vois pas trop ou cela peut se trouver...
ce code ne fait pas appel à un autre plugging javascript ou autre... du coup je ne sais pas trop ou chercher... aurais-tu une idée ?
m
0
l
Contenus similaires
16 Février 2011 01:54:00

Il faut que tu trouve le script qui génère les thumb, car comme l'a souligné omar, le script que tu donnes ici est celui qui affiche, et donc en modifiant juste la largeur l'image est déformé car étirer.

Premiere piste, lorsque tu ajoutes une/des photo(s) regarde ta barre d'adresse à ce moment pour savoir sur quel page tu te situe, et essaie de décortiquer à partir de là.
m
0
l
16 Février 2011 06:55:17

Après avoir farfouillé dans les dossiers, je pense avoir trouvé le code correspondant.
Merci okinou !

voici la partie du code qui nous intéresse:

  1. function getExhibitImages($id)
  2. {
  3. $OBJ =& get_instance();
  4.  
  5. $body = "<ul id='boxes'>\n";
  6.  
  7. // the images
  8. $imgs = $OBJ->db->fetchArray("SELECT *
  9. FROM ".PX."media
  10. WHERE media_ref_id = '$id'
  11. AND media_obj_type = '".OBJECT."'
  12. ORDER BY media_order ASC, media_id ASC");
  13.  
  14. if ($imgs)
  15. {
  16. foreach ($imgs as $img)
  17. {
  18. $body .= "<li class='box' id='box$img[media_id]'><img src='" . BASEURL . GIMGS . "/sys-$img[media_file]' width='75' title='$img[media_title]' /><br /><a href='#' onclick=\"getImgPreview($img[media_id]); return false;\">".$OBJ->lang->word('edit')."</a></li>\n";
  19. }
  20. }
  21. else
  22. {
  23. $body .= "<li>".$OBJ->lang->word('no images')."</li>\n";
  24. }
  25.  
  26. $body .= "</ul>\n";
  27.  
  28. $body .= "<div class='cl'><!-- --></div>\n";
  29.  
  30. return $body;
  31. }
  32.  
  33.  
  34. function getOnOff($input='', $attr='')
  35. {
  36. $OBJ =& get_instance();
  37. $onoff = array('on' => 1, 'off' => 0);
  38.  
  39. $li = '';
  40. $input = ($input == '') ? 'off' : $input;
  41.  
  42. foreach($onoff as $key => $val)
  43. {
  44. $active = ($input == $val) ? "class='active'" : '';
  45. $extra = ($val == 0) ? "id='off'" : '';
  46. $li .= li($OBJ->lang->word($key), "$active title='$val' $extra");
  47. }
  48.  
  49. return ul($li, $attr);
  50. }
  51.  
  52.  
  53. function getThumbSize($input='', $attr='')
  54. {
  55. $OBJ =& get_instance();
  56. global $default;
  57.  
  58. $li = '';
  59. $input = ($input == '') ? 100 : $input;
  60.  
  61. foreach($default['thumbsize'] as $key => $size)
  62. {
  63. $active = ($input == $size) ? "class='active'" : '';
  64. $li .= li($OBJ->lang->word($key) . 'px', "$active title='$size'");
  65. }
  66.  
  67. return ul($li, $attr);
  68. }
  69.  
  70. function getImageSizes($input='', $attr='')
  71. {
  72. $OBJ =& get_instance();
  73. global $default;
  74.  
  75. $li = '';
  76. $input = ($input == '') ? 300 : $input;
  77.  
  78. foreach($default['imagesize'] as $key => $size)
  79. {
  80. $title = $key . 'px';
  81.  
  82. $active = ($input == $size) ? "class='active'" : '';
  83. $li .= li($title, "$active title='$size'");
  84. }
  85.  
  86. return ul($li, $attr);
  87. }



voici le code en entier:

  1. <?php if (!defined('SITE')) exit('No direct script access allowed');
  2.  
  3.  
  4. function getSection($section='', $name, $attr='')
  5. {
  6. global $default;
  7.  
  8. $OBJ =& get_instance();
  9.  
  10. $s = '';
  11.  
  12. $rs = $OBJ->db->fetchArray("SELECT secid,section,sec_desc,sec_proj FROM ".PX."sections ORDER by sec_ord ASC");
  13.  
  14. foreach ($rs as $a)
  15. {
  16. //($section == $a['secid']) ? $sl = "selected ": $sl = "";
  17. $s .= option($a['secid'], $a['sec_desc'], $a['sec_proj'], 1);
  18. }
  19.  
  20. return select($name, attr($attr), $s);
  21. }
  22.  
  23.  
  24. function getSections()
  25. {
  26. global $default;
  27.  
  28. $OBJ =& get_instance();
  29.  
  30. $s = '';
  31.  
  32. $rs = $OBJ->db->fetchArray("SELECT secid, sec_desc, sec_proj, sec_ord
  33. FROM ".PX."sections ORDER by sec_ord ASC");
  34.  
  35. if (!$rs)
  36. {
  37. return p('None');
  38. }
  39.  
  40. // we need the highest number section
  41. // sorted by order, so we can array pop
  42. $quantities = $rs;
  43. $quantity = array_pop($quantities);
  44.  
  45. foreach ($rs as $a)
  46. {
  47. $projects = ($a['sec_proj'] == 1) ? '  XX' : '';
  48.  
  49. $s .= div(href($OBJ->lang->word('edit'), "?a=exhibits&q=section&id=$a[secid]") . '  ' . $a['sec_desc'] . $projects, "class='section'");
  50. }
  51.  
  52. $s .= p(href($OBJ->lang->word('create new section'), '#', "onclick=\"toggle('add-sec'); return false;\""));
  53.  
  54. $input = label($OBJ->lang->word('section name') . ' ' . span($OBJ->lang->word('required'), "class='small-txt'")) . input('sec_desc', 'text', "maxlength='25'", NULL);
  55. $input .= label($OBJ->lang->word('folder name') . ' ' . span($OBJ->lang->word('required'), "class='small-txt'")) . input('section', 'text', "maxlength='15'", NULL);
  56. $input .= input('hsec_ord', 'hidden', NULL, $quantity['sec_ord']);
  57. $input .= div(input('add_sec', 'submit', NULL, $OBJ->lang->word('add section')), "style='text-align: right;'");
  58.  
  59. $s .= div($input, "style='display:none; margin-top: 9px;' id='add-sec'");
  60.  
  61. return div($s, "class='sections'");
  62. }
  63.  
  64.  
  65. function getSectionOrd($section='', $name, $attr='')
  66. {
  67. $OBJ =& get_instance();
  68.  
  69. $s = '';
  70.  
  71. $rs = $OBJ->db->fetchArray("SELECT sec_ord,sec_desc FROM ".PX."sections ORDER BY sec_ord ASC");
  72.  
  73. foreach ($rs as $a)
  74. {
  75. $s .= option($a['sec_ord'], $a['sec_ord'], $section, $a['sec_ord']);
  76. }
  77.  
  78. return select($name, attr($attr), $s);
  79. }
  80.  
  81.  
  82. function getProcessing($state, $name, $attr)
  83. {
  84. $OBJ =& get_instance();
  85.  
  86. if ($state == '') $state = 0;
  87.  
  88. $s = option(1, $OBJ->lang->word('on'), $state, 1);
  89. $s .= option(0, $OBJ->lang->word('off'), $state, 0);
  90.  
  91. return select($name, attr($attr), $s);
  92. }
  93.  
  94.  
  95. function getGeneric($state, $name, $attr)
  96. {
  97. $OBJ =& get_instance();
  98.  
  99. if ($state == '') $state = 0;
  100.  
  101. $s = option(1, $OBJ->lang->word('on'), $state, 1);
  102. $s .= option(0, $OBJ->lang->word('off'), $state, 0);
  103.  
  104. return select($name, attr($attr), $s);
  105. }
  106.  
  107.  
  108. function getOrganize($state, $name, $attr)
  109. {
  110. $OBJ =& get_instance();
  111.  
  112. if ($state == '') $state = 1;
  113.  
  114. $s = option(1, $OBJ->lang->word('chronological'), $state, 1);
  115. $s .= option(2, $OBJ->lang->word('sectional'), $state, 2);
  116.  
  117. return select($name, attr($attr), $s);
  118. }
  119.  
  120.  
  121. function getThemes($path, $default)
  122. {
  123. // let's get the folders and info...
  124. $modules = array();
  125.  
  126. if (is_dir($path))
  127. {
  128. if ($fp = opendir($path))
  129. {
  130. while (($module = readdir($fp)) !== false)
  131. {
  132. if ((!eregi("^_", $module)) && (!eregi("^CVS$", $module)) && (!eregi(".php$", $module)) && (!eregi(".html$", $module)) && (!eregi(".DS_Store", $module)) && (!eregi("\.", $module)) && (!eregi("plugin", $module)) && (!eregi("css", $module)) && (!eregi("js", $module)) && (!eregi("img", $module)))
  133. {
  134. $modules[] = $module;
  135. }
  136. }
  137. }
  138. closedir($fp);
  139. }
  140.  
  141. sort($modules);
  142.  
  143. $s = '';
  144.  
  145. foreach ($modules as $module)
  146. {
  147. $s .= option($module, ucwords($module), $module, $default);
  148. }
  149.  
  150. return select('obj_theme', NULL, $s);
  151. }
  152.  
  153.  
  154. function getPresent($path, $default)
  155. {
  156. $OBJ =& get_instance();
  157.  
  158. if ($OBJ->object['obj_mode'] == 1)
  159. {
  160. // advanced...
  161. // let's get the folders and info...
  162. $modules = array();
  163.  
  164. if (is_dir($path))
  165. {
  166. if ($fp = opendir($path))
  167. {
  168. while (($module = readdir($fp)) !== false)
  169. {
  170. if (eregi("^exhibit", $module))
  171. {
  172. $modules[] = $module;
  173. }
  174. }
  175. }
  176. closedir($fp);
  177. }
  178.  
  179. sort($modules);
  180.  
  181. $s = '';
  182. foreach ($modules as $module)
  183. {
  184. $search = array('exhibit.','.php');
  185. $replace = array('','');
  186. $module = str_replace($search, $replace, $module);
  187. $name = str_replace('_', ' ', $module);
  188.  
  189. $s .= option($module, ucwords($name), $module, $default);
  190. }
  191. }
  192. else
  193. {
  194. global $default;
  195.  
  196. // easy mode - defaults
  197. $formats = $default['standard_formats'];
  198.  
  199. $s = '';
  200. foreach ($formats as $format)
  201. {
  202. if (file_exists($path . '/exhibit.' . $format . '.php'))
  203. {
  204. $name = str_replace('_', ' ', $format);
  205. $s .= option($format, ucwords($name), $format, $default);
  206. }
  207. }
  208.  
  209. // we should throw an error if no formats exist
  210. }
  211.  
  212.  
  213. return select('obj_present', "id='ajx-present'", $s);
  214. }
  215.  
  216.  
  217. function createFileBox($num)
  218. {
  219. $OBJ =& get_instance();
  220.  
  221. $s = label($OBJ->lang->word('image title') . span(' ' . $OBJ->lang->word('optional')));
  222.  
  223. for ($i = 0; $i <= $num; $i++)
  224. {
  225. ($i > 0) ? $style = " style='display:none'" : $style = '';
  226.  
  227. $s .= div(input("media_title[$i]", 'text', NULL, NULL).' '.
  228. input("filename[]", 'file', NULL, NULL),
  229. "class='attachFiles' id='fileInput$i'$style");
  230. }
  231.  
  232. $s .= p(href($OBJ->lang->word('attach more files'), 'javascript:AddFileInput()'),
  233. "class='attachMore' id='attachMoreLink'");
  234.  
  235. return $s;
  236. }
  237.  
  238.  
  239. function getExhibitImages($id)
  240. {
  241. $OBJ =& get_instance();
  242.  
  243. $body = "<ul id='boxes'>\n";
  244.  
  245. // the images
  246. $imgs = $OBJ->db->fetchArray("SELECT *
  247. FROM ".PX."media
  248. WHERE media_ref_id = '$id'
  249. AND media_obj_type = '".OBJECT."'
  250. ORDER BY media_order ASC, media_id ASC");
  251.  
  252. if ($imgs)
  253. {
  254. foreach ($imgs as $img)
  255. {
  256. $body .= "<li class='box' id='box$img[media_id]'><img src='" . BASEURL . GIMGS . "/sys-$img[media_file]' width='75' title='$img[media_title]' /><br /><a href='#' onclick=\"getImgPreview($img[media_id]); return false;\">".$OBJ->lang->word('edit')."</a></li>\n";
  257. }
  258. }
  259. else
  260. {
  261. $body .= "<li>".$OBJ->lang->word('no images')."</li>\n";
  262. }
  263.  
  264. $body .= "</ul>\n";
  265.  
  266. $body .= "<div class='cl'><!-- --></div>\n";
  267.  
  268. return $body;
  269. }
  270.  
  271.  
  272. function getOnOff($input='', $attr='')
  273. {
  274. $OBJ =& get_instance();
  275. $onoff = array('on' => 1, 'off' => 0);
  276.  
  277. $li = '';
  278. $input = ($input == '') ? 'off' : $input;
  279.  
  280. foreach($onoff as $key => $val)
  281. {
  282. $active = ($input == $val) ? "class='active'" : '';
  283. $extra = ($val == 0) ? "id='off'" : '';
  284. $li .= li($OBJ->lang->word($key), "$active title='$val' $extra");
  285. }
  286.  
  287. return ul($li, $attr);
  288. }
  289.  
  290.  
  291. function getThumbSize($input='', $attr='')
  292. {
  293. $OBJ =& get_instance();
  294. global $default;
  295.  
  296. $li = '';
  297. $input = ($input == '') ? 100 : $input;
  298.  
  299. foreach($default['thumbsize'] as $key => $size)
  300. {
  301. $active = ($input == $size) ? "class='active'" : '';
  302. $li .= li($OBJ->lang->word($key) . 'px', "$active title='$size'");
  303. }
  304.  
  305. return ul($li, $attr);
  306. }
  307.  
  308. function getImageSizes($input='', $attr='')
  309. {
  310. $OBJ =& get_instance();
  311. global $default;
  312.  
  313. $li = '';
  314. $input = ($input == '') ? 300 : $input;
  315.  
  316. foreach($default['imagesize'] as $key => $size)
  317. {
  318. $title = $key . 'px';
  319.  
  320. $active = ($input == $size) ? "class='active'" : '';
  321. $li .= li($title, "$active title='$size'");
  322. }
  323.  
  324. return ul($li, $attr);
  325. }
  326.  
  327.  
  328. // this should be moved to a helper file
  329. // for use with javascripts encodeURIComponent()
  330. function utf8Urldecode($value)
  331. {
  332. if (is_array($value))
  333. {
  334. foreach ($key as $val) { $value[$key] = utf8Urldecode($val); }
  335. }
  336. else
  337. {
  338. $value = urldecode($value);
  339. }
  340.  
  341. return $value;
  342. }
  343.  
  344.  
  345. function deleteImage($file, $ext='')
  346. {
  347. if ($file)
  348. {
  349. $file = ($ext == '') ? $file : $ext .'-' . $file;
  350.  
  351. if (file_exists(DIRNAME . GIMGS . '/' . $file))
  352. {
  353. @unlink(DIRNAME . GIMGS . '/' . $file);
  354. }
  355. }
  356. }
  357.  
  358.  
  359. function getBreak($default)
  360. {
  361. $s = '';
  362.  
  363. for ($i = 0; $i <= 10; $i++)
  364. {
  365. $s .= option($i, $i, $i, $default);
  366. }
  367.  
  368. return select('break', "id='ajx-break'", $s);
  369. }
  370.  
  371.  
  372. function getYear($init)
  373. {
  374. global $default;
  375. $s = '';
  376.  
  377. $this_year = date('Y');
  378.  
  379. if ($init == '') $init = $this_year; // default is this year
  380.  
  381. $current = $this_year + 1; // we want to add one year in the future
  382.  
  383. for ($i = $current; $i >= $default['first_year']; $i--)
  384. {
  385. $s .= option($i, $i, $i, $init);
  386. }
  387.  
  388. return select('year', "id='ajx-year'", $s);
  389.  
  390. }
  391.  
  392.  
  393. function getColorPicker($bgcolor)
  394. {
  395. return "<div style='margin: 3px 0 5px 0;' onclick=\"toggle('plugin'); return false;\">
  396. <span id='plugID' style='background: #$bgcolor; cursor: pointer;'> </span>
  397. <span id='colorTest2'>#$bgcolor</span>
  398. </div>
  399.  
  400. <div id='plugin' onmousedown=\"HSVslide('drag','plugin',event);\" style='display: none;'>
  401. <div id='SV' onmousedown=\"HSVslide('SVslide','plugin',event);\" title='Saturation + Value'>
  402. <div id='SVslide' style='TOP: -4px; LEFT: -4px;'><br /></div>
  403. </div>
  404.  
  405. <div id='H' onmousedown=\"HSVslide('Hslide','plugin',event);\" title='Hue'>
  406. <div id='Hslide' style='TOP: -7px; LEFT: -8px;'><br /></div>
  407. <div id='Hmodel'></div>
  408. </div>
  409. </div>
  410.  
  411. <input id='colorTest' type='text' name='color' value='ffffff' style='display:none;' />\n\n";
  412. }
  413.  
  414.  
  415. ?>



J'ai juste une petite hésitation, ce code à l'air de générer aussi (ou seulement) les vignettes affichées dans le cms, bien sûr je ne souhaite modifier que les vignettes affichées dans le site et non dans le cms.
m
0
l
a c 232 L Programmation
a b w Photo
16 Février 2011 09:51:42

Salut,

Ce n'est pas ça non plus... du coup je suis allé téléchargé le programme.
C'est dans le fichier media.php:
  1. /**
  2. * Returns array of file size
  3. * (square thumbnails)
  4. *
  5. * @param void
  6. * @return array
  7. */
  8. function sys_resize()
  9. {
  10. $this->sys_size['w'] = $this->size[0];
  11. $this->sys_size['h'] = $this->size[1];
  12.  
  13. if ($this->sys_size['w'] > $this->sys_size['h'])
  14. {
  15. $this->offset['w'] = ($this->sys_size['w'] - $this->sys_size['h'])/2;
  16. $this->offset['h'] = 0;
  17. $this->sys_size['w'] = $this->sys_size['h'];
  18. }
  19. elseif ($this->sys_size['h'] > $this->sys_size['w'])
  20. {
  21. $this->offset['w'] = 0;
  22. $this->offset['h'] = ($this->sys_size['h'] - $this->sys_size['w'])/2;
  23. $this->sys_size['h'] = $this->sys_size['w'];
  24. }
  25. else
  26. {
  27. $this->offset['w'] = 0;
  28. $this->offset['h'] = 0;
  29. $this->sys_size['w'] = $this->sys_size['h'];
  30. }
  31. }
  32.  
  33. /**
  34. * Returns imagedestroy of input image
  35. *
  36. * @param integer $maxwidth
  37. * @return mixed
  38. */
  39. function sys_thumb($maxwidth)
  40. {
  41. $this->sys_resize();
  42.  
  43. $output_image = imagecreatetruecolor($this->sys_thumb, $this->sys_thumb);
  44.  
  45. // if we have transparency in the image
  46. // it sucks that PHP auto sets background to black!!!!!!!
  47. if ($this->tFlag == TRUE)
  48. {
  49. imagecolortransparent($output_image, imagecolorallocate($output_image,
  50. $this->tRed, $this->tGreen, $this->tBlue));
  51. }
  52.  
  53. // png special handling rules
  54. if ($this->filemime == 'png')
  55. {
  56. // http://be.php.net/manual/en/function.imagesavealpha.php
  57. imagealphablending($output_image, false);
  58. imagesavealpha($output_image, true);
  59. }
  60.  
  61. @imagecopyresampled($output_image, $this->input_image, 0, 0,
  62. $this->offset['w'], $this->offset['h'],
  63. $this->sys_thumb, $this->sys_thumb,
  64. $this->sys_size['w'], $this->sys_size['h']);
  65.  
  66. // for sys- naming convention
  67. $image = $this->path . 'sys-' . $this->filename;
  68.  
  69. $this->do_output($output_image, $image);
  70. imagedestroy($output_image);
  71.  
  72. return;
  73. }


La 1ère fonction sys_resize créée la définition de miniature de l'image pour qu'elle soit carrée.
La 2ème fonction sys_thumb utilise ces dimensions pour créer une nouvelle image.
m
0
l
16 Février 2011 10:55:08

super... merci !
Du coup il faut jouer avec les paramètres de sys_resize, mais de quelle manière?
En cherchant sur le net je suis tombé sur le lien suivant:

http://www.phidels.com/php/index.php3?page=../php/paget...

mais tout ca m'a l'air bien compliqué... est-ce qu'il ne suffit pas de changer les valeurs
de [0] et [1] pour que cela fonctionne ?

['w'] = $this->size[0];
['h'] = $this->size[1];

m
0
l
16 Février 2011 11:13:41

tout à fait, tu as 2 possibilité :

- soit modifié :
# $this->sys_size['w'] = ''; // ta largeur en pixel
# $this->sys_size['h'] = ''; // ta hauteur en pixel

Si ce script n'est utilisé que pour ta gallerie par exemple, c'est du tout bon,

- soit : si il s'en sert pour d'autre module (genre redimensionnement d'avatar pour les profil d'un forum par ex) il te faudra modifier les valeur de la même façoon mais au niveau du script qui traite ton formulaire/upload d'image et non via la fonction mère comme on vient de te montré.
m
0
l
16 Février 2011 11:14:18

Et oublie pas ta modification CSS comme tu as fait au début pour que la largeur/hauteur soit la meme dans pour l'affichage des thumb dans ta galerie.
m
0
l
16 Février 2011 15:50:06

Bonjour,

Juste pour les galeries je pense,
à moins qu'il ne soit également lié à l'affichage des vignettes dans le cms.

Voici les modifications de madia.php

  1. function sys_resize()
  2. {
  3. $this->sys_size['w'] = '35px'; // ta largeur en pixel
  4. $this->sys_size['h'] = '55px';// ta hauteur en pixel
  5.  
  6. if ($this->sys_size['w'] > $this->sys_size['h'])
  7. {
  8. $this->offset['w'] = ($this->sys_size['w'] - $this->sys_size['h'])/2;
  9. $this->offset['h'] = 0;
  10. $this->sys_size['w'] = $this->sys_size['h'];
  11. }
  12. elseif ($this->sys_size['h'] > $this->sys_size['w'])
  13. {
  14. $this->offset['w'] = 0;
  15. $this->offset['h'] = ($this->sys_size['h'] - $this->sys_size['w'])/2;
  16. $this->sys_size['h'] = $this->sys_size['w'];
  17. }
  18. else
  19. {
  20. $this->offset['w'] = 0;
  21. $this->offset['h'] = 0;
  22. $this->sys_size['w'] = $this->sys_size['h'];
  23. }
  24. }


et celle du css dans le plugging Djuve:


  1. function dynamicCSS()
  2. {
  3. return "#d-image img {border: 0px solid #f2f2f2; margin: 9px 0px 0px 0px; }
  4. #d-thumbs { margin: 0px 0px 0px 0px;}
  5. #d-thumbs img {padding: 0; border: none; height: 55px; width: 35px ; }
  6. #d-image { };
  7. #text { margin-left: 1em; float: right; width: 200px; }";
  8. #info {width: 800; border: none;}
  9. }


Mais petit KwaCk !
C'est comme si le plugging Djuve ne fonctionnait plus, le reste du site oui.

http://treesign.pocketdesigners.be/index.php?/projets/s...

Ne faut-il pas changer ces lignes de code également ?

  1. $this->sys_size['w'] = $this->sys_size['h'];

m
0
l
16 Février 2011 21:31:31

ok, ça s'affiche, j'avais oublié d'enlever un reste de code(test) dans l'index.php.
Par contre les photos s'étirent toujours avec:

  1. # $this->sys_size['w'] = '35px'; // ta largeur en pixel
  2. # $this->sys_size['h'] = '55px';// ta hauteur en pixel


et

  1. #d-thumbs img {padding: 0; border: none; height: 55px; width: 35px ; }
m
0
l
26 Février 2011 13:16:15

Quelqu'un aurait-il la suite de la solution ?
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS