Надо создать галерею, да ещё сделать надпись на изображении аля водяной знак, надо загрузить аватару? — не вопрос, предлагаю обратить внимание на
универсальный класс для загрузки файлов class.upload.php. Сложно придумать функцию, которая не была бы встроена в это чудесный класс.
Итак, у нас есть самая простая форма:
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" size="32" name="image_field" value="">
<input type="submit" name="Submit" value="upload">
</form>
Прошу обратить внимание на multipart/form-data, без этого не будет сформирован ассоциативный массив $_FILES['image_field'].
Под катом привожу небольшой пример использования и перевод (неполный) основных операторов.
Требуется помощь в полном переводе.
Постановка задачи: необходимо реализовать обработку изображения аватары для авторизованного пользователя.
1. аватара должна быть масштабирована до размеров 100 на 100 px;
2. картинка должна переименовываться на лету в идентификатор авторизованного пользователя (таким образом легко сделать синхронизацию между записью в базе данный и именем аватары);
3. аватара в конечном итоге должна быть расширением строго *.jpg (необходима конвертация из других форматов);
4. загрузочный файл не более 50 килобайт;
5. минимальный размеры загружаемого файла 50 и 50 px по ширине и высоте соответственно;
6. качество результирующего файла 90%;
7. загружка должна происходить в определённую директорию;
8. при повторной загрузке старый файл должен быть перезаписан;
9. при возникновении ошибки сообщение должно быть на языке выбранным пользователем (имеется ввиду, что сайт изначально многоязычный).
Реализация:
require "../class/class.upload_0.29/class.upload.php";
if($_SESSION["s_lng"]=="ru"){ $handle = new upload($_FILES['avatara'], 'ru_RU'); };
if($_SESSION["s_lng"]=="en"){ $handle = new upload($_FILES['avatara']); };
if ($handle->uploaded){
$handle->file_new_name_body = $_SESSION['id_user'];
$handle->image_resize = true;
$handle->image_x = 100;
$handle->image_y = 100;
$handle->image_min_width = 50;
$handle->image_min_height = 50;
$handle->file_max_size = 1024*50;
$handle->image_convert = 'jpg';
$handle->jpeg_quality = 90;
$handle->file_overwrite = true;
$handle->process($_SERVER['DOCUMENT_ROOT'].'/useravatara/');
if ($handle->processed) {
$handle->clean();
}else{
echo '<h1><font color="#cc0000">error</font></h1>' . $handle->error;
};
};
Список операторов:
file_new_name_body даёт файлу новое имя (default: '')
$handle->file_new_name_body = 'new name';
file_name_body_add добавляет в конец имени файла «суффикс» (default: '')
$handle->file_name_body_add = '_uploaded';
file_name_body_pre добавляет в начало имени файла «приставку» (default: '')
$handle->file_name_body_pre = 'thumb_';
file_new_name_ext изменяет расширений файла, не путать с конвертацией (default: '')
$handle->file_new_name_ext = 'txt';
file_safe_name сохраняет имя файла, меняет пробелы на нижнее подчёркивание (default: true)
$handle->file_safe_name = true;
file_overwrite перезапись файла, если такой существует (default: false)
$handle->file_overwrite = true;
file_auto_rename автоматически переименовывает файл, если такой существует (default: true)
$handle->file_auto_rename = true;
auto_create_dir автоматически создаёт каталог, если его нет (default: true)
$handle->auto_create_dir = true;
dir_auto_chmod автоматически назначает CHMOD каталогу назначения, если не записываемый (default: true)
$handle->dir_auto_chmod = true;
dir_chmod назначает CHMOD каталогу назначения, если не записываемый (default: 0777)
$handle->dir_chmod = 0777;
file_max_size установка максимумального веса файла при загрузке (default: upload_max_filesize from php.ini)
$handle->file_max_size = '1024'; // 1KB
mime_check безопасный выбор MIME-типов (default: true)
$handle->mime_check = true;
no_script выполнение скриптов в загружаемых текстовых файлах (default: true)
$handle->no_script = false;
allowed array of allowed mime-types. wildcard accepted, as in image/* (default: check Init)
$handle->allowed = array('application/pdf','application/msword', 'image/*');
forbidden array of forbidden mime-types. wildcard accepted, as in image/* (default: check Init)
$handle->forbidden = array('application/*');
image_convert конвертация форматов (possible values: ''|'png'|'jpeg'|'gif'|'bmp'; default: '')
$handle->image_convert = 'jpg';
image_background_color if set, will forcibly fill transparent areas with the color, in hexadecimal (default: null)
$handle->image_background_color = '#FF00FF';
image_default_color fallback color background color for non alpha-transparent output formats, such as JPEG or BMP, in hexadecimal (default: #FFFFFF)
$handle->image_default_color = '#FF00FF';
jpeg_quality установка качества для JPEG файлов (default: 85)
$handle->jpeg_quality = 50;
jpeg_size if set to a size in bytes, will approximate jpeg_quality so the output image fits within the size (default: null)
$handle->jpeg_size = 3072;
image_max_width установка максимальной ширины в пикселях (default: null)
$handle->image_max_width = 200;
image_max_height установка максимальной высоты в пикселях (default: null)
$handle->image_max_height = 100;
image_max_pixels установка максимального количества пикселей (default: null)
$handle->image_max_pixels = 50000;
image_max_ratio установка максимального соотношения сторон (width/height) (default: null)
$handle->image_max_ratio = 1.5;
image_min_width установка минимальной ширины в пикселях (default: null)
$handle->image_min_width = 100;
image_min_height установка минимальной высоты в пикселях (default: null)
$handle->image_min_height = 500;
image_min_pixels установка минимального значения пикселей (default: null)
$handle->image_min_pixels = 20000;
image_min_ratio установка минимального соотношения сторон (width/height) (default: null)
$handle->image_min_ratio = 0.5;
image_resize делать ли масштабирование изображения или нет (ресайз) (default: false)
$handle->image_resize = true;
image_x установка ширины при ресайзе (default: 150)
$handle->image_x = 100;
image_y установка высоты при ресайзе (default: 150)
$handle->image_y = 200;
Use either one of the following
image_ratio if true, resize image conserving the original sizes ratio, using image_x AND image_y as max sizes if true (default: false)
$handle->image_ratio = true;
image_ratio_crop if true, resize image conserving the original sizes ratio, using image_x AND image_y as max sizes, and cropping excedent to fill the space. setting can also be a string, with one or more from 'TBLR', indicating which side of the image will be kept while cropping (default: false)
$handle->image_ratio_crop = true;
image_ratio_fill if true, resize image conserving the original sizes ratio, using image_x AND image_y as max sizes, fitting the image in the space and coloring the remaining space. setting can also be a string, with one or more from 'TBLR', indicating which side of the space the image will be in (default: false)
$handle->image_ratio_fill = true;
image_ratio_no_zoom_in same as image_ratio, but won't resize if the source image is smaller than image_x x image_y (default: false)
$handle->image_ratio_no_zoom_in = true;
image_ratio_no_zoom_out same as image_ratio, but won't resize if the source image is bigger than image_x x image_y (default: false)
$handle->image_ratio_no_zoom_out = true;
image_ratio_x if true, resize image, calculating image_x from image_y and conserving the original sizes ratio (default: false)
$handle->image_ratio_x = true;
image_ratio_y if true, resize image, calculating image_y from image_x and conserving the original sizes ratio (default: false)
$handle->image_ratio_y = true;
image_ratio_pixels if set to a long integer, resize image, calculating image_y and image_x to match a the number of pixels (default: false)
$handle->image_ratio_pixels = 25000;
В продолжении установки для манипуляций с подключенной библиотекой GD2+.
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.