2012-07-10 6 views
2

Я не могу найти документацию по этому вопросу. Я загружаю изображения и используяБиблиотека загрузки Codeigniter получить имя файла большого пальца

$config['create_thumb'] = TRUE; 

для создания большого пальца и сохранения исходного изображения.

Есть ли способ получить имя файла большого пальца? _thumb автоматически добавляется в имя миниатюр, но нет функции для извлечения полного имени.

ответ

9

Там на самом деле гораздо более простой способ сделать это:

if ($this->upload->do_upload()) // If file was uploaded 
{   
    $data = $this->upload->data(); // Returns information about your uploaded file. 
    $thumbnail = $data['raw_name'].'_thumb'.$data['file_ext']; // Here it is 
} 
+0

Спасибо, Роберт! Я думаю, что ваше решение работает лучше всего. Это просто и возвращает все правильные данные файла. – CyberJunkie

0

Я думаю, вы должны создать функцию для создания большого пальца руки изображения, например:

function generateThumb($fileName) { 
    $config['image_library'] = 'gd2'; 
    $config['source_image'] = './upload/images/clca/' . $fileName; 
    $config['create_thumb'] = TRUE; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 90; 
    $config['height'] = 90; 
    var file = ""; 
    $this->load->library('image_lib', $config); 
    if(!$this->image_lib->resize()) { 
     echo $this->image_lib->display_errors(); 
    } else { 
     // Get File Name 
     var file = $fileName."_thumb"; 
    }   
} 

Для вызова этой функции, во-первых, вы должны загрузить файл, получить имя файла & вызовите функцию ->$this->generateThumb($file_resp['file_name']);

В загруженной папке, там будет 2 изображения (оригинал изображение & генерируемого палец изображения с _thumb суффикса)

Чтобы получить имя файла, я использовал «если» чтобы убедиться, что в генерации большого пальца нет ошибок, а затем я присоединяюсь к $ fileName + "_ thumb". Я использовал этот путь, потому что я проверил объект $this->image_lib, но нет никаких ссылок на имя файла сгенерированного изображения большого пальца.

Редакция:

  • Сори, я немного пропустил свой вопрос о получении имени файла из файла большого пальца, я редактировал свой пост & код :)

Надеется, что это help :)

+1

Спасибо за код, который я пытался что-то подобное. Вы можете создать большой палец без необходимости создавать отдельную функцию и использовать '$ this-> upload-> имя_файла. '_thumb'', но он не получает расширение файла. – CyberJunkie

3

CodeIgniter не предоставляет никаких функций для извлечения имени миниатюры. Он добавит _thumb в ваше имя файла. Если вы хотите написать пользовательскую функцию, чтобы получить имя эскиза, используйте это.

function generate_thumb($filename, $path = '') 
{ 
    // if path is not given use default path // 
    if (!$path) { 
     $path = FCPATH . 'somedir' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR; 
    } 

    $config['image_library'] = 'gd2'; 
    $config['source_image'] = $path . $filename; 
    $config['create_thumb'] = TRUE; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 75; 
    $config['height'] = 50; 

    $this->load->library('image_lib', $config); 

    if (!$this->image_lib->resize()) { 
     echo $this->image_lib->display_errors(); 
     return FALSE; 
    } 
    // get file extension // 
    preg_match('/(?<extension>\.\w+)$/im', $filename, $matches); 
    $extension = $matches['extension']; 
    // thumbnail // 
    $thumbnail = preg_replace('/(\.\w+)$/im', '', $filename) . '_thumb' . $extension; 
    return $thumbnail; 
} 

Вход:

echo generate_thumb('someimage.jpg'); 
echo generate_thumb('other_image.png', FCPATH . 'dirname' . DIRECTORY_SEPARATOR); 

Выход:

someimage_thumb.jpg 
other_image_thumb.png 

Надеется, что это помогает вашему. Спасибо!!

+1

Умный код! Спасибо! – CyberJunkie

+1

Код @Robert работает только в том случае, если вы генерируете миниатюру одновременно с загрузкой файла. Этот код работает только с указанием пути или времени загрузки. Это не значит, что этот код хорош. :) Благодаря!! –

1
function general_thumbnail_image($source_image_path, $width, $height){ 

    $thumbnail_config['image_library'] = 'gd2'; 
    $thumbnail_config['source_image'] = $source_image_path; 
    $thumbnail_config['thumb_marker'] = '_'.$width.'x'.$height; 
    $thumbnail_config['create_thumb'] = TRUE; 
    $thumbnail_config['maintain_ratio'] = TRUE; 
    $thumbnail_config['width'] = $width; 
    $thumbnail_config['height'] = $height; 


    $this->load->library('image_lib', $thumbnail_config); 

    if($this->image_lib->resize()){ 
     $result['status'] = True; 

     //If you need complete base path of the thumbnail. 
     $result['thumbnail_base_path'] = $this->image_lib->full_dst_path; 

     //If you just need name of the thumbnail. 
     $source_image_name = $this->image_lib->source_image; 
     $extension = strrchr($source_image_name , '.'); 
     $name = substr($source_image_name , 0, -strlen($extension)); 
     $result['thumbnail_image_name'] = $name.$config['thumb_marker'].$extension; 

     //If you need path similar to source image path. 
     $source_image_path = $source_image_path; 
     $extension = strrchr($source_image_path , '.'); 
     $name = substr($source_image_path , 0, -strlen($extension)); 
     $result['thumbnail_image_path'] = $name.$config['thumb_marker'].$extension; 

    } 
    else{ 
     $result['status'] = false; 
     $result['error'] = $this->image_lib->display_errors('', ''); 
    } 
    return $result; 
} 

Вызов функции.

$thumbnail_result = $this->generate_thumbnail_image('./assests/images/apple.jpg', 180, 180); 
print_r($thumbnail_result); 

Вывод будет выглядеть следующим образом:

Array 
    (
     [status] => 1 
     [thumbnail_base_path] => D:/xampp/htdocs/project_name/assets/images/apple_180x180.jpg 
     [thumbnail_image_name] => apple_180x180.jpg 
     [thumbnail_image_path] => ./assets/images/apple_180x180.jpg 
    ) 
Смежные вопросы