Дата  Запланированые курсы
24.11 Linux-MP. Модульная программа «Архитектура и администрирование Linux»
24.11 Linux-LE. Основы архитектуры и администрирования Linux
26.11 Поисковая оптимизация (SEO)
26.11 Средства растровой графики. Adobe Photoshop
26.11 Управление проектами (MS Project)
27.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений (Группа II)
27.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений (Группа I)
28.11 CORTEX-M-MP. Введение в технологии разработки систем управления на базе МК с RISC ядром ARM Cortex-M
28.11 CORTEX-M-INTRO. Введение в современную микроконтроллерную технику
03.12 Трёхмерное моделирование. 3ds Max
03.12 Компьютерное проектирование в системе AutoCAD (базовый курс)
03.12 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
07.12 DEV-PY200. Объектно-ориентированное программирование на языке Python
10.12 Основы создания веб-сайтов. Adobe Dreamweaver
10.12 Поисковая оптимизация (SEO) для профессионалов
10.12 Средства векторной графики. Adobe Illustrator
12.12 Инструменты бизнес-анализа Microsoft Excel: PowerPivot, PowerView
12.12 CORTEX-M-RISC. RISC-архитектура ARM Cortex-M в микроконтроллерах
17.12 MOC-20762. Разработка баз данных SQL
17.12 Работа в MS Excel. Расширенные возможности
17.12 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
17.12 Adobe After Effects. Создание анимации и эффектов
09.01 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
16.01 CORTEX-M-STM32F. Семейство МК компании ST Microelectronics STM32Fxxx с вычислительным ядром ARM Cortex M3
19.01 Linux-LF. Расширенное администрирование ОС Linux
04.02 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
13.02 CORTEX-M-RTOS. Разработка управляющих программ для МК систем управления с использованием многозадачных ОС реального времени
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
20.03 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
Открыт набор на осенний семестр в Академию информатики для школьников Открыт набор на осенний семестр на программы второго высшего образования
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Масштабирование изображения в PHP
Vladimir Malikov
#1 Оставлено : 1 августа 2010 г. 21:48:22(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 26.07.2010(UTC)
Сообщений: 7
Баллов: 21
Откуда: Russia Saint Petersburg

Сказал(а) «Спасибо»: 1 раз
Допустим, в htdocs в одной папке имеется изображение с именем «image.jpg»;
И имеется php-файл:
<font face="Arial"><font size="1"><font color="maroon">&lt;?php
header('Content-type: image/jpg');
function resizeImage($path, $maxWidth, $maxHeight, $imageExp=false) {
//Проверка правильного пути к изображению
if (!file_exists($path)) {
echo 'error 6';
return false;
}

//Проверка правильности расширения
if ($imageExp) {
$expArray = array(1=&gt;'gif', 2=&gt;'jpg', 3=&gt;'png');
$expError = true;//Если расширение правильное, переменная должна стать "false"
foreach($expArray as $key =&gt; $val) {
if ($imageExp == $val) {
$imageExp = $key;
setType($imageExp, 'integer');
}
}
if(!$imageExp || !is_int($imageExp)) {
echo 'error 22';
return false;
}
}

//Создаём массив с параметрами изображения
$imageInfo = getimagesize($path);
//Создаём переменные с размерами изображений
$widthImageSize = $imageInfo[0];
$heightImageSize = $imageInfo[1];

$srcImage;
switch($imageInfo[2]){
case 1: $srcImage = ImageCreateFromGIF($path); break;
case 2: $srcImage = ImageCreateFromJPEG($path); break;
case 3: $srcImage = ImageCreateFromPNG($path); break;
}
if (getType($srcImage) != 'resource') {
echo 'error 41';
return false;
}

//Узнаём число, во сколько надо уменьшить картинку до нужных размеров
$ratioWidth = $widthImageSize/$maxWidth;
$ratioHeight = $heightImageSize/$maxHeight;

//Проверяем, не являются ли размеры изображения ниже необходимых, если не являюся, то узнаём
//пропорциональные размеры изображения, если являются - оставляем изначальные размеры
if($widthImageSize &gt; $maxWidth || $heightImageSize &gt; $maxHeight) {
if($ratioWidth &gt; $ratioHeight){
$widthSize = $maxWidth;
$heightSize = $heightImageSize/$ratioWidth;
}else{
$widthSize = $widthImageSize/$ratioHeight;
$heightSize = $maxHeight;
}
} else {
$widthSize = $widthImageSize;
$heightSize = $heightImageSize;
}

//Создаём новое изображение
$destImage = imagecreate($widthSize, $heightSize);

//Копируем исходное изображение в созданое изображение с заданными размерами
ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $widthSize, $heightSize, $widthImageSize, $heightImageSize);

//Создаём картинку, согласно заданной переменной, либо по умолчанию
//Проверяем, было ли задано расширение по умолчанию, если нет, то оставляем расширение
//загружаемого изображения
$createImageExp;//Переменная, содержащая номер необходимого расширения
if ($imageExp) {
$createImageExp = $imageExp;
} else {
$createImageExp = $imageInfo[2];
}

switch($createImageExp){
case 1: $resizedImage = imagegif($destImage); break;
case 2: $resizedImage = imagejpeg($destImage); break;
case 3: $resizedImage = imagepng($destImage); break;
}

// освобаждаем память
ImageDestroy($srcImage);
ImageDestroy($destImage);
return $resizedImage;
}

//resizeImage(Путь_к_изображению, ширина, высота, желаемое расширение)
resizeImage('image.jpg', 800, 600, false);
?&gt;</font id="maroon"></font id="size1"></font id="Arial">

<font face="Times New Roman"><font size="3">
Необходимо, чтобы эта функция масштабировала введёное изображение. Масштабировать она умеет, но вид изображения до масштабироания:
[img]s52.radikal.ru/i135/1008/33/65f2123a1564.jpg[/img]

отличается от вида после масштабирования:
[img]s61.radikal.ru/i173/1008/06/27c271755530.jpg[/img]
</font id="size3"></font id="Times New Roman">

В чём может быть дело?
Реклама
Alexander.Kudakov
#2 Оставлено : 2 августа 2010 г. 2:23:12(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
проблема скорее всего в imagecreate или в ImageCopyResized. судя по картинке - пропала палитра
RTFM почитайте php.net/manual/en...on.imagecopyresized.php - там в частности используется imagecreate<b>truecolor</b>
Mikhail.Buranov
#3 Оставлено : 2 августа 2010 г. 2:45:08(UTC)
Mikhail.Baranov

Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 07.10.2007(UTC)
Сообщений: 337
Баллов: 2,114,020
Мужчина
Откуда: Russia

Нужно заменить
Код:

//Создаём новое изображение
$destImage = imagecreate($widthSize, $heightSize);

на другую функцию
Код:
$destImage = imagecreatetruecolor($widthSize, $heightSize);
Vladimir Malikov
#4 Оставлено : 4 августа 2010 г. 2:01:08(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 26.07.2010(UTC)
Сообщений: 7
Баллов: 21
Откуда: Russia Saint Petersburg

Сказал(а) «Спасибо»: 1 раз
Спасибо огромное!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.