제목 | 이미지 처리 질문요!! | ||
---|---|---|---|
글쓴이 | 닉 | 작성시각 | 2013/04/29 15:40:57 |
|
|||
--모델 소스 -- <?php class Attache_model extends CI_Model {
var $gallery_path;
var $gallery_path_url;
var $file_path;
public function __construct()
{
parent::__construct();
// 생성자 코드에 기능추가
$this->gallery_path= realpath(APPPATH . '../imges');
$this->file_path= realpath(APPPATH . '../file');
$this->gallery_path_url = base_url().'imges/';
}
function do_upload()
{
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path,
'max_size' => 0
);
$this->load->library('upload',$config);
$this->upload->do_upload();
$image_data = $this->upload->data();
$config = array(
'source_image' => $image_data['full_path'],
'new_image' => $this->gallery_path . '/thumbs',
'maintain_ration' => true,
'width' => 150,
'height' => 100
);
$this->load->library('image_lib',$config);
$this->image_lib->resize();
}
function do_upload_image($w,$f)
{
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path ."/". $f,
'max_size' => 0
);
$this->load->library('upload',$config);
$this->upload->do_upload();
$image_data = $this->upload->data();
if($image_data['image_width']>$w){
$config = array(
'source_image' => $image_data['full_path'],
'maintain_ration' => true,
'width' => $w,
'height' => $w/4*3
);
$this->load->library('image_lib',$config);
$this->image_lib->resize();
}
}
function do_upload_file($f)
{
$config = array(
'allowed_types' => '*',
'upload_path' => $this->file_path ."/". $f,
'max_size' => 2000
);
$this->load->library('upload',$config);
$this->upload->do_upload();
}
function get_images()
{
$files = scandir($this->gallery_path);
$files = array_diff($files,array('.','..','thumbs'));
$images = array();
foreach ($files as $file) {
$images[] = array(
'url' => $this->gallery_path_url . $file,
'thumb_url' => $this->gallery_path_url . 'thumbs/' . $file
);
}
return $images;
}
}
$w는 가로사이즈고요, $f는 게시판 이름이에요.. 다름이 아니라 do_upload_image에서 원본 사이즈가 제가 정한 사이즈보다 크면 리사이즈 하게 되는데요 리사이즈 되면서 여기에 섬네일생성 기능을 추가하려고 하는데 너무 어렵네요 메뉴얼에 있는대로 넣어봤는데 이게 중복처리가 안되는거같아요 ㅠ_ㅠ 두 기능 구현하려면 어떻게 해야할가요 ? |
|||
다음글 | select_max 사용중 오류 발생 (1) | ||
이전글 | mysql where절이 이상해요 ㅠㅠㅠ (3) | ||
변종원(웅파)
/
2013/04/29 16:35:16 /
추천
0
이미지 config에 $config['create_thumb'] = TRUE; 추가해보세요
|
닉
/
2013/04/30 04:55:14 /
추천
0
웅파//
답변감사합니다. 제가 질문을 잘못했네요.. 제가 원한건 원본은 제가 정한 게시판크기보다 크면 리사이즈 하고 섬네일(사이즈 240*180)도 만들어서 리스트에 표현하고 싶은데요. 'create_thumb' => true, 요항목을 넣으면 원본은 그대로 두고 섬네일만 생성해서 리사이즈 하게 되요 .. 결국 제가 원하는건 섬네일이 2개 생성되야 되는거죠.. 가능할거 같아서 이런식으로 function do_upload_image2($w,$f)
{
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path ."/". $f,
'max_size' => 0
);
$this->load->library('upload',$config);
$this->upload->do_upload();
$image_data = $this->upload->data();
$config = array(
'source_image' => $image_data['full_path'],
'new_image' => $this->gallery_path ."/". $f . '/thumbs',
'maintain_ration' => true,
'create_thumb' => true,
'width' => 240,
'height' => 180
);
$this->load->library('image_lib',$config);
$this->image_lib->resize();
if($image_data['image_width']>$w){
$config2 = array(
'source_image' => $image_data['full_path'],
'maintain_ration' => true,
'width' => $w,
'height' => $w/4*3
);
$this->load->library('image_lib',$config2);
$this->image_lib->resize();
}
}
해봤는데 안되네요 .. |
변종원(웅파)
/
2013/04/30 09:58:26 /
추천
0
썸네일 여러개 만들때 처음에만 라이브러리 로딩하고 두번째부터는
초기화함수 이용합니다. 매뉴얼 보시면 있어요
|
변종원(웅파)
/
2013/04/30 10:16:04 /
추천
0
$config['image_library'] = 'gd2'; $config['source_image'] = $data['full_path']; $config['create_thumb'] = TRUE; $config['master_dim'] = 'height'; $config['maintain_ratio'] = FALSE; $config['width'] = 240; $config['height'] = $h240; $config['thumb_marker']=''; $config['new_image'] = $data['raw_name'].'_p'.$data['file_ext']; $this->load->library('image_lib', $config); $this->image_lib->resize(); $this->image_lib->clear(); $config['image_library'] = 'gd2'; $config['source_image'] = $data['full_path']; $config['create_thumb'] = TRUE; $config['maintain_ratio'] = TRUE; $config['width'] = 110; $config['height'] =140; $config['thumb_marker']=''; $config['new_image'] = $data['raw_name'].'_w'.$data['file_ext']; $this->image_lib->initialize($config); $this->image_lib->resize(); |
닉
/
2013/04/30 14:45:22 /
추천
0
웅파//
답변 감사합니다. 예제를 보고 clear와 initialize를 이용해서 해당 기능을 구현했습니다, 정말 감사합니다. ^^ |
닉
/
2013/04/30 14:45:46 /
추천
0
function do_upload_image2($w,$f) { $config = array( 'allowed_types' => 'jpg|jpeg|gif|png', 'upload_path' => $this->gallery_path ."/". $f, 'max_size' => 0 ); $this->load->library('upload',$config); $this->upload->do_upload(); $image_data = $this->upload->data(); $config = array( 'source_image' => $image_data['full_path'], 'maintain_ration' => true, 'new_image' => $this->gallery_path ."/". $f . "/thumbs", 'width' => 240, 'height' => 180 ); $this->load->library('image_lib',$config); $this->image_lib->resize(); $this->image_lib->clear(); if($image_data['image_width']>$w){ $config = array( 'source_image' => $image_data['full_path'], 'maintain_ration' => true, 'width' => $w, 'height' => $w/4*3 ); $this->image_lib->initialize($config); $this->image_lib->resize(); } echo $this->image_lib->display_errors(); } |