Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie Zdjęcia PHP
Forum PHP.pl > Forum > PHP
Tomek1111
Witam serdecznie,
Mam pytanko. Mam moduł ładowania zdjęć do folderu.

Dodając aktualności na stronie, stworzyłem skrypt który ładuje plik na serwer do kazdej aktualności.
Sciezka ładowania pliku:
http://domena.pl/_upload/news/2015/08/02/zdjecie.jpg


Chcialbym teraz aby wyswietlał mi to zdjecie obok tego skryptu:

  1. <div class="box gray">
  2. <div class="box-header"><?php echo __('Aktualności') ?></div>
  3. <div class="content">
  4. <?php echo $pager ?>
  5.  
  6.  
  7. <?php foreach ($news as $n): ?>
  8. <div>
  9. <a href="<?php echo Route::url('site_news/frontend/news/show', array('id' => $n->news_id, 'title' => url::title($n->news_title))) ?>"><?php echo $n->news_title ?></a> (<?php echo date::my($n->news_date_added, 'news') ?>)
  10. </div>
  11. <?php endforeach; ?>
  12.  
  13. <?php echo $pager ?>
  14. </div>
  15. </div>


Nie wiem jak to wpleść z racji tego, iż zdjecie dodaje po folderach.
katalog/rok/miesiac/dzien/zdjecie

Czy moglby mi ktos pomoc? Z góry dziękuję

Dokładam plik img.php dla rozpoznania
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2. /**
  3. * @author AkoSoft Team <biuro@akosoft.pl>
  4. * @link <a href="http://www.akosoft.pl" target="_blank">http://www.akosoft.pl</a>
  5. * @copyright Copyright (c) 2012, AkoSoft
  6. *
  7. * @package AkoAd
  8. * @version 3.0.0
  9. */
  10. class img {
  11.  
  12. public static function process($place, $types, $img_id, $img_date, $uploaded_file_path)
  13. {
  14. $config = Kohana::$config->load('img.types');
  15.  
  16. if (is_string($types))
  17. {
  18. if ($types == 'all')
  19. {
  20. $types = array_keys($config);
  21. }
  22. else
  23. {
  24. $types = array($types);
  25. }
  26. }
  27.  
  28. if ( ! in_array('original', $config))
  29. {
  30. $types[] = 'original';
  31. }
  32.  
  33. $dir = DOCROOT . Upload::$default_directory . DIRECTORY_SEPARATOR . $place . date('/Y/m/d/', $img_date);
  34.  
  35. if ( ! is_dir($dir))
  36. {
  37. if ( ! mkdir($dir, 0777, true))
  38. {
  39. throw new Exception("Directory $dir cannot be create!");
  40. }
  41. }
  42.  
  43. $image_size = getimagesize($uploaded_file_path);
  44. $uploaded['image_width'] = $image_size[0];
  45. $uploaded['image_height'] = $image_size[1];
  46.  
  47. foreach ($types as $type)
  48. {
  49. if ( ! isset($config[$type]))
  50. throw new Exception('[img::process] Check configuration!');
  51.  
  52. $image = Image::factory($uploaded_file_path);
  53.  
  54. // wymiary
  55. $width = $config[$type]['width'];
  56. $height = $config[$type]['height'];
  57.  
  58. if ( ! empty($config[$type]['watermark']))
  59. {
  60. self::_do_watermark($image);
  61. }
  62.  
  63. if ($config[$type]['resize'] && ($uploaded['image_width'] > $width || $uploaded['image_height'] > $height) )
  64. {
  65. // jesli ma byc obciety zmniejsz wg krotszego boku
  66. if ($config[$type]['crop'])
  67. {
  68. $image->resize($width, $height, ($uploaded['image_width'] > $uploaded['image_height'] ? Image::HEIGHT : Image::WIDTH));
  69. }
  70. // zmniejsz po dluzszym boku tylko te zdjecia ktore maja wiekszy wymiar
  71. elseif ($width == $height)
  72. {
  73. // dluzsza szerokosc
  74. if ($uploaded['image_width'] > $uploaded['image_height'])
  75. {
  76. if ($uploaded['image_width'] > $width)
  77. {
  78. $image->resize($width, $height, Image::WIDTH);
  79. }
  80. }
  81. // dluzsza wysokosc
  82. elseif ($uploaded['image_width'] < $uploaded['image_height'])
  83. {
  84. if ($uploaded['image_height'] > $height)
  85. {
  86. $image->resize($width, $height, Image::HEIGHT);
  87. }
  88. }
  89. // rowne dlugosci bokow
  90. else
  91. {
  92. $image->resize($width, $height, Image::AUTO);
  93. }
  94. }
  95. // ustaw wg rozmiaru z konfiguracji
  96. else
  97. {
  98. $image->resize($width, $height, Image::AUTO);
  99. }
  100. }
  101.  
  102. // przytnij
  103. if ($config[$type]['crop'])
  104. {
  105. $image->crop($width, $height);
  106. }
  107.  
  108. if ( ! empty($config[$type]['extension']))
  109. {
  110. $extension = $config[$type]['extension'];
  111. }
  112. else
  113. {
  114. $extension = 'jpg';
  115. }
  116.  
  117. //set background color for image types not supporting transparency
  118. if($extension != 'png')
  119. {
  120. $image->background('#fff');
  121. }
  122.  
  123. // zapisz
  124. $file_name = $img_date.'_'.$img_id.'_'.$config[$type]['flag'] . '.' . $extension;
  125.  
  126. if (isset($config[$type]['quality']))
  127. {
  128. $image->save($dir.$file_name, $config[$type]['quality']);
  129. }
  130. else
  131. {
  132. $image->save($dir.$file_name);
  133. }
  134. }
  135.  
  136. unlink($uploaded_file_path);
  137.  
  138. return TRUE;
  139. }
  140.  
  141. protected static function _do_watermark(Image & $image)
  142. {
  143. if (!Kohana::$config->load('global.site.watermark.enabled')
  144. || ! file_exists(DOCROOT . '_upload' . DIRECTORY_SEPARATOR . 'watermark.png')
  145. )
  146. {
  147. return;
  148. }
  149.  
  150. $opacity = Kohana::$config->load('global.site.watermark.opacity');
  151. $placement = Kohana::$config->load('global.site.watermark.placement');
  152.  
  153. $watermark = Image::factory(DOCROOT . '_upload' . DIRECTORY_SEPARATOR . 'watermark.png');
  154. $watermark->resize($image->width/4, $image->height/4);
  155.  
  156. if ($placement == 'top_left')
  157. {
  158. $image->watermark($watermark, FALSE, FALSE, $opacity);
  159. }
  160. elseif ($placement == 'top_right')
  161. {
  162. $image->watermark($watermark, $image->width - $watermark->width - 5, FALSE, $opacity);
  163. }
  164. elseif ($placement == 'bottom_left')
  165. {
  166. $image->watermark($watermark, FALSE, TRUE, $opacity);
  167. }
  168. elseif ($placement == 'bottom_right')
  169. {
  170. $image->watermark($watermark, $image->width - $watermark->width - 5, TRUE, $opacity);
  171. }
  172. elseif ($placement == 'top_center')
  173. {
  174. $image->watermark($watermark, floor( ( $image->width - $watermark->width ) / 2 ), FALSE, $opacity);
  175. }
  176. elseif ($placement == 'bottom_center')
  177. {
  178. $image->watermark($watermark, floor( ( $image->width - $watermark->width ) / 2 ), TRUE, $opacity);
  179. }
  180. }
  181.  
  182. public static function path_uri($place, $type, $img_id, $img_date)
  183. {
  184. $config = Kohana::$config->load('img.types');
  185. $url = Upload::$default_directory . '/' . $place . '/' . date('Y/m/d', $img_date) . '/' . $img_date . '_' . $img_id . '_' . $config[$type]['flag'] . '.' . ( ! empty($config[$type]['extension']) ? $config[$type]['extension'] : 'jpg');
  186. return $url;
  187. }
  188.  
  189. public static function path($place, $type, $img_id, $img_date)
  190. {
  191. $base_url = url::base(TRUE, FALSE);
  192. $url = $base_url . self::path_uri($place, $type, $img_id, $img_date);
  193. return $url;
  194. }
  195.  
  196. public static function image_exists($place, $type, $img_id, $img_date)
  197. {
  198. $config = Kohana::$config->load('img.types');
  199. return file_exists(DOCROOT . Upload::$default_directory . '/' . $place . '/' . date('Y/m/d', $img_date) . '/' . $img_date . '_' . $img_id . '_' . $config[$type]['flag'] . '.' . ( ! empty($config[$type]['extension']) ? $config[$type]['extension'] : 'jpg'));
  200. }
  201.  
  202. public static function delete($place, $image_id, $image_date)
  203. {
  204. $types = Kohana::$config->load('img.types');
  205.  
  206. foreach ($types as $type => $config)
  207. {
  208. $path = self::disk_path($place, $image_id, $image_date, $type);
  209. @ unlink($path);
  210. }
  211. }
  212.  
  213. public static function disk_path($place, $image_id, $image_date, $type)
  214. {
  215. $config = Kohana::$config->load('img.types.' . $type);
  216.  
  217. if (empty($config))
  218. {
  219. throw new Exception("Bad type $type!");
  220. }
  221.  
  222. $path = DOCROOT . Upload::$default_directory . '/' . $place . '/' . date('Y/m/d', $image_date) . '/' . $image_date . '_' . $image_id . '_' . $config['flag'] . '.' . ( ! empty($config['extension']) ? $config['extension'] : 'jpg');
  223. return $path;
  224. }
  225.  
  226. public static function init()
  227. {
  228. $use_imagick = FALSE;
  229.  
  230. try
  231. {
  232. $use_imagick = !Image_GD::is_bundled() && Image_Imagick::check();
  233. }
  234. catch(Exception $ex)
  235. {
  236. Kohana::$log->add(Log::WARNING, $ex->getMessage())
  237. ->write();
  238. }
  239.  
  240. if($use_imagick)
  241. {
  242. Image::$default_driver = 'imagick';
  243. }
  244. else
  245. {
  246. Image::$default_driver = 'GD';
  247. }
  248. }
  249.  
  250. public static function check_watermark()
  251. {
  252. try {
  253. return Image_GD::is_bundled() || Image_Imagick::check();
  254. }
  255. catch(Exception $ex)
  256. {
  257. Kohana::$log->add(Log::WARNING, 'Cannot use image watermark feature!')
  258. ->add(Log::WARNING, $ex->getMessage())
  259. ->write();
  260.  
  261. return FALSE;
  262. }
  263. }
  264. }
  265. ?>
golabow
Przekazałeś troche za mało informacji aby można było Ci pomóc.

Z tego ci widze każde zdjęcie ma swoją date i identyfikator, na podstawie którego jest wybierany katalog i nazwa zdjęcia.

Powinieneś wyciągnać informacje o powiązanym zdjęciu z newsem i użyć metody path($place, $type, $img_id, $img_date) do pobrania scieżki do pliku.

Mógłbyś opisać w jaki sposób jest powiązany news ze zdjęciem na bazie?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.