|
|
|
| Помогоите написать скрипт который бы создавал уменьшенную копию изображения.
Только чтобы не более указанных размеров (чтобы не было черных полей)
Буду очень Вам признательна. | |
|
|
|
|
|
|
|
для: Равечка
(19.11.2006 в 14:29)
| | собственно я это делаю по следующему алгоритму:
1. высчитываю размер превьюшки
2. создаю новое изображение с нужными размерами
3. открываю оригианал и копирую его с автоматическим уменьшением в созданное выше новое изображение (п.2)
4. сохранию конечную версию превьюшки
для всех этих махинаций понадобиться библиотека GDLib для PHP. У меню уже имеется готовый код, если хотите, могу подлиться, не жалко :) | |
|
|
|
|
|
|
|
для: NIK
(19.11.2006 в 14:39)
| | Да хочу. просто проблема такая... У меня есть скрипт который получает файл .jpg сохраняет его в папку, потом делает уменьшенную копию и сохраняет в другую папку... проблема лишь в том что остаются черные поля.. =( | |
|
|
|
|
|
|
|
для: Равечка
(19.11.2006 в 15:19)
| | точно не помню адрес... но в поиске по слову "превьюшка" должны найтись темы с готовым скриптом | |
|
|
|
|
|
|
|
для: Равечка
(19.11.2006 в 15:19)
| | форма:
echo "<form action='' enctype='multipart/form-data' method='POST'>
<input class='text' type='file' name='file'>
</form>";
|
обработчик
if ($_FILES['file']['type'] == "image/jpeg" OR $_FILES['file']['type'] == "image/pjpeg" OR $_FILES['file']['type'] == "image/png" OR $_FILES['file']['type'] == "image/x-png" OR $_FILES['file']['type'] == "image/gif") {
########################################################
# Блок кода для создания превьюшек больших изображений
########################################################
# Копируем оригинальное изображение
if(!copy($_FILES['file']['tmp_name'], "big_".$_FILES['file']['name'])) {
$error = $error."<li><b> Ошибка при копировании изображения</b>";
}
# Собираем информацию о изображении
$img_url = "big_".$_FILES['file']['name']; // адрес оригинального изображения
$img_name = $_FILES['file']['name']; // имя
$img_size = $_FILES['file']['size']; // размер
$img_info = getimagesize($img_url);
$img_width = $img_info['0']; // ширина изображения
$img_height = $img_info['1']; // высота изображения
$img_format = $img_info['2']; // расширение файла
$img_format = image_type_to_mime_type($img_format); // mime-тип
# Провереям, превышает ли ширина 450 пикселов
if ($img_width > 450) {
# Определяем высоту будующей превьюшки
$img_real_height = $img_height; // перед этим резервируем реальную высоту
$width_diff = $img_width - 450; // выясняем, на сколько мы урезали изображение в ширине
$one_percent = $width_diff/100; // 1% от того, на сколько урезали
$thirty_percent = 30*$one_percent; // 30% от того, на сколько урезали
$img_height = $img_real_height/($img_width/450); // новая уменьшанная высота изображения
$img_height = @floor($img_height); // убираем дробную часть
# Определяем название превью
$preview_name = "small_".$_FILES['file']['name'];
# Создаем пустое изображение
$preview_true_color = imagecreatetruecolor(450, $img_height);
# Определяем формат изображения и открываем наше большое изображение (оригинальное)
# Если формат изображения JPG
if ($img_format == "image/jpeg") {
$img_src = imagecreatefromjpeg($img_url);
}
# Если формат изображения PNG
if ($img_format == "image/png") {
$img_src = imagecreatefrompng($img_url);
}
# Если формат изображения GIF
if ($img_format == "image/gif") {
$img_src = imagecreatefromgif($img_url);
}
# Копируем в пустое изображение уменьшенную компию большого изображения (оригинального)
if (imagecopyresampled($preview_true_color, $img_src, 0, 0, 0, 0, 450, $img_height, $img_width, $img_real_height)) {
# Если копирование успешно, записываем готовое превью изображения в формате JPG
if (!imagejpeg($preview_true_color, $preview_name, 100)) {
$error = $error."<li><b> Ошибка при создании изображения</b>";
}
} else {
$error = $error."<li><b> Ошибка при копировании изображения</b>";
}
# Разрушаем изображения
if (!imagedestroy($img_src)) {
$error = $error."<li><b> Ошибка при разрушении изображения!</b>";
}
if (!imagedestroy($preview_true_color)) {
$error = $error."<li><b> Ошибка при разрушении изображения!</b>";
}
}
} else {
$error = $error."<li><b> Вы должны выбрать Изображение в формате <u>jpg</u> или <u>png</u></b>";
}
|
| |
|
|
|
|