public function newParam($mid, $pid, $value, $files = array()) { $index = 'image_' . $pid; $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); if ($files[$index]['size'] > 0) { foreach ($files as $file_key => $file) { $file_param = explode('_', $file_key); if ($file_param[0] == 'image') { //загружаем изображение if ($file['size'] < 5000000 && $file['size'] > 0) { $ext = explode('.', $file['name']); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $file['name']); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); $size = explode(',', $options['upload_size']); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения if (count($size) == 2) { $size = explode(',', $options['upload_size']); if ($size[0] != 0 && $size[1] != 0) { $ratio = $image->width / $image->height; // Соотношение сторон нужных размеров $original_ratio = $size[0] / $size[1]; // Размеры, до которых обрежем картинку до масштабирования $crop_width = $image->width; $crop_height = $image->height; // Смотрим соотношения if ($ratio > $original_ratio) { // Если ширина картинки слишком большая для пропорции, // то будем обрезать по ширине $crop_width = round($original_ratio * $crop_height); } else { // Либо наоборот, если высота картинки слишком большая для пропорции, // то обрезать будем по высоте $crop_height = round($crop_width / $original_ratio); } // Обрезаем по высчитанным размерам до нужной пропорции $image->crop($crop_width, $crop_height); // Масштабируем картинку то точных размеров $image->resize($size[0], $size[1], Image::NONE); } else { $image->resize($size[0], $size[1]); } } //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } } } } else { $server_name = Request::parseUrl($value); if ($server_name != Kohana::$base_url && $server_name != '') { $ext = explode('.', $value); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $value); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($value, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } else { $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value); } } //сохраняем картинку $insert = DB::insert('images', array('id', 'value'))->values(array('', $value)); $result = $insert->execute(); $insertId = $result[0]; //Добавляем связь материала с папкой $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute(); if ($insert != NULL) { return TRUE; } else { return FALSE; } }
public function newParam($mid, $pid, $value, $files = array()) { $index = 'image_' . $pid; $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); if ($files[$index]['size'] > 0) { foreach ($files as $file_key => $file) { $file_param = explode('_', $file_key); if ($file_param[0] == 'image') { //загружаем изображение if ($file['size'] < 5000000 && $file['size'] > 0) { $ext = explode('.', $file['name']); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $file['name']); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); $size = explode(',', $options['upload_size']); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения // if(count($size)==2) // { // $size = explode(',', $options['upload_size']); // $image->resize($size[0], $size[1]); // } //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } } } } else { $server_name = Request::parseUrl($value); if ($server_name != Kohana::$base_url && $server_name != '') { $ext = explode('.', $value); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $value); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($value, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } else { $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value); } } //сохраняем картинку $insert = DB::insert('images', array('id', 'value'))->values(array('', $value)); $result = $insert->execute(); $insertId = $result[0]; //Добавляем связь материала с папкой $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute(); if ($insert != NULL) { return TRUE; } else { return FALSE; } }
public function newParam($mid, $pid, $value, $files = array(), $export = FALSE) { $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); /*ONLY FOR EXPORT OPTION!*/ if ($export == TRUE) { foreach ($value as $val) { $server_name = Request::parseUrl($val); if ($server_name != Kohana::$base_url && $server_name != '') { $info = getimagesize($val); $ext = image_type_to_extension($info[2]); //смотрим сколько файлов в текущей папке файтов //генерируем имя изображения // $base = new Model_Base(); // $extarr = explode('.', $val); // $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . $ext; // if(exec("cp ".$val." ".DOCROOT . $this->dir . $filename)) if (copy($val, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки // $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(NULL, 90); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $val = DIRECTORY_SEPARATOR . $this->dir . $filename; } } $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', $val)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } else { for ($i = 0; $i < count($files['photos']['name']); ++$i) { if ($files['photos']['size'][$i] < 15000000 && $files['photos']['size'][$i] > 100) { //расширение файла $ext = explode('.', $files['photos']['name'][$i]); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $files['photos']['name'][$i]); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($files['photos']['tmp_name'][$i], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $size = explode(',', $options['upload_size']); if (count($size) == 2) { $size = explode(',', $options['upload_size']); $image->resize($size[0], $size[1]); } $crop = explode(',', $options['upload_crop']); if (count($crop) == 2) { $crop = explode(',', $options['upload_crop']); $image->crop($crop[0], $crop[1]); } //изменение размера по короткой стороне // $watermark=Image::factory(DOCROOT . '/img/watermark.png'); //берем изображение для водяного знака // // $offset_x = $image->width - $watermark->width - 10; // $offset_y = $image->height - $watermark->height - 10; // // $image->watermark($watermark, $offset_x, $offset_y, $opacity = 70); // var_dump($image); //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', DIRECTORY_SEPARATOR . $this->dir . $filename)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } } } }