Создание уменьшенной копии изображения при загрузке.
И снова здравствуйте! Ка всегда после долгого гугления пишу сюда. В данный момент проблема такова: имеется уплоадер скриншотов и постеров. Который загружает картинки посредством js и php. Всё работает как часы. Хотел сделать что бы при загрузке изображения делалась миниатюры и загружались в нужные мне папки. В эти директории хочу грузить тумбы и оригиналы.
php пока то что сделал
// Куда нужно загружать if ($screen == true) { $upload_screens_big = ROOT_DIR . "/uploads/screens/big/" . $name . "_" . $ide . ".jpg"; // оригинал $upload_screens_med = ROOT_DIR . "/uploads/screens/med/" . $name . "_" . $ide . ".jpg"; // уменьшенная копия $upload_screens_sml = ROOT_DIR . "/uploads/screens/sml/" . $name . "_" . $ide . ".jpg"; // уменьшенная копия (102х160) }else{ $upload_poster_big = ROOT_DIR . "/uploads/anime/big/" . $name . "." . $path_parts['extension']; // оригинал $upload_poster_med = ROOT_DIR . "/uploads/anime/med/" . $name . "." . $path_parts['extension']; // уменьшенная копия $upload_poster_sml = ROOT_DIR . "/uploads/anime/sml/" . $name . "." . $path_parts['extension']; // уменьшенная копия (102х160) }
Очень долгое гугление выдало решение: Ниже приведу код создание тумба и наложение ватемарка стандартными возможностями dle.
php
if ($tumb != 0) { $imgsrcf = $upload_file; $imgtumb = $upload_file_thumb; if (!isset($imag)) $imag = new thumbnail($imgsrcf); else $imag->thumbnail($imgsrcf); $imag->size_auto($tumb, $tumb_t); $imag->jpeg_quality($wap_config['jpeg_quality']); $imag->save($imgtumb); @chmod($imgtumb, 0777); } if ($wmo == "on") { $imgwaterm = $upload_file; if (!isset($imag)) $imag = new thumbnail($imgwaterm); else $imag->thumbnail($imgwaterm); $imag = new thumbnail($imgwaterm); $imag->insert_watermark($config['max_watermark']); $imag->save($imgwaterm); @chmod($imgwaterm, 0777); }
Разобраться со стандартным генератором dle не смог.
php уплоадера
$allowed_extensions = array ("gif", "jpg", "png", "jpe", "jpeg" ); $path_poster = ROOT_DIR . "/uploads/anime/"; $path_screens = ROOT_DIR . "/uploads/screens/"; if( $_REQUEST['action'] == "uploadposter" ) { $subaction = $_REQUEST['subaction']; $name = $_FILES['uploadimg']['name']; // имя файла $size = $_FILES['uploadimg']['size']; // размер файла if(strlen($name)){ list($txt, $ext) = explode(".", $name); if(in_array($ext,$allowed_extensions)){ // смотрим формат такой как мы разрешили?! $actual_image_name = time().$session_id.".".$ext; $tmp = $_FILES['uploadimg']['tmp_name']; if(move_uploaded_file($tmp, $path_poster.$subaction."/".$actual_image_name)){ echo "/uploads/anime/".$subaction."/".$actual_image_name; }else echo "Ошибка загрузки!"; }else echo "Ошибка типа файла!"; }else echo "Ошибка имени файла!"; }elseif( $_REQUEST['action'] == "uploadscreen" ){ $subaction = $_REQUEST['subaction']; $name = $_FILES['uploadimg']['name']; // имя файла $size = $_FILES['uploadimg']['size']; // размер файла if(strlen($name)){ list($txt, $ext) = explode(".", $name); if(in_array($ext,$allowed_extensions)){ // смотрим формат такой как мы разрешили?! $actual_image_name = time().$session_id.".".$ext; $tmp = $_FILES['uploadimg']['tmp_name']; if(move_uploaded_file($tmp, $path_screens.$subaction."/".$actual_image_name)){ echo "/uploads/screens/".$subaction."/".$actual_image_name; }else echo "Ошибка загрузки!"; }else echo "Ошибка типа файла!"; }else echo "Ошибка имени файла!"; }
js часть кода
if(type == "poster"){ $("#imageform").ajaxForm({ url: dle_root+'engine/modules/waparser/poster_upload.php', data: { action: 'uploadposter' }, type: "post", //target: '#xfield[poster]', success: function(responseText, statusText, xhr, $form) { $('#add-poster').attr('src',responseText); $('.i-poster').attr('value',responseText); $("#posterupload").dialog('close'); } }); }else if(type == "screen"){ $("#imageform").ajaxForm({ url: dle_root+'engine/modules/waparser/poster_upload.php', data: { action: 'uploadscreen' }, type: "post", //target: '#xfield[poster]', success: function(responseText, statusText, xhr, $form) { $("#screen_"+ids).attr('src',responseText); $(".screen_"+ids).attr('value',responseText); $("#posterupload").dialog('close'); } }); }
Буду благодарен если покажите на примере, да и вообще любом ответам. Заранее спасибо.
Источник: dle-faq.pro