<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Изменять размер фото
01.07.2012 17:51:48 Изменять размер фото Сообщение #1
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Растягивается или сжимается одна из сторон изображения.
Профиль Ответить
01.07.2012 17:57:05 Изменять размер фото Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Так сохраняйте пропорции. Во сколько раз изменили один габарит, во столько же раз надо изменить другой габарит.
Профиль Ответить
01.07.2012 18:13:16 Изменять размер фото Сообщение #3
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

$w_src = imagesx($src);
$h_src= imagesy($src);
// получение ширины и высоты изображения в пикселях

$ratio = $w_src/$w;
$w_new = round($w_src/$ratio);
$h_new = round($h_src/$ratio);
// получение координат для построения нового изображения необходимой ширины


Просто изменить размер легко. Мне нужно его обрезать, дабы изображения сохранялись в расширении 1200х800 или 800х1200, в зависимости от ориентации.
Профиль Ответить
01.07.2012 20:54:03 Изменять размер фото Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Так сжать/растянуть или просто обрезать?
Профиль Ответить
02.07.2012 12:16:27 Изменять размер фото Сообщение #5
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Просто обрезать.
Профиль Ответить
02.07.2012 12:56:30 Изменять размер фото Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Тогда вырезайте просто прямоугольник с нужным размером. Для этого есть параметры $w_src, $h_src в функции imagecopyresized().
Профиль Ответить
07.07.2012 17:16:31 Изменять размер фото Сообщение #7
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Спасибо большое!
Что скажете по результату?
<?php
require_once('connect_base.php')
if(!empty($_GET)){header("location: 402.html"; exit();}//отправляем зеленого хакера куда-нибудь погулять

function createphoto ($input,$output) {
$q = 100;//задаем качество
$old = imagecreatefromjpeg($input);
$h_old = imagesy($old);
$w_old = imagesx($old);

if($h_old > $w_old){$w = 600; $h = 800; $ratio = $w_old/$w;
$w_new = round($w_old/$ratio);
$h_new = round($h_old/$ratio);
$new = imagecreatetruecolor($w, $h);
imagecopyresized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w_old, $h_old);
// Функция imagecopyresized копирует прямоугольные области с одного изображения на другое
}
else{$w = 800; $h = 600; $ratio = $h_old/$h;
$w_new = round($w_old/$ratio);
$h_new = round($h_old/$ratio);
$new = imagecreatetruecolor($w, $h);
imagecopyresized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w_old, $h_old);
}
imagejpeg($new,$output,$q);
imagedestroy($new);
imagedestroy($old);
}
if((!isset($_POST['imob'])) && (!empty($_FILES['image']['name']))){
if($_FILES['image']['tmp_name'] == 0){echo 'Файл существует по адресу ', $_FILES['image']['tmp_name'], '<br/>';

$ex = substr($_FILES['image']['name'], 1 + strrpos($_FILES['image']['name'], ".");//получаем расширение загружаемого файла

if(($ex === 'jpg') || ($ext === 'jreg') || ($ext === 'JPEG') || ($ext === 'JPG')){echo 'Проверка №1 удачна<br/>';//проверяем расширение разрешаем только изображение jpeg, jpg

$imageinfo = getimagesize($_FILES['image']['tmp_name']);


if($imageinfo['mime'] === 'image/jpeg'){//проверяем ещё раз по содержимому

$sql = "SELECT max(`id`) FROM `table`";//вытаскиваем с базы самый большой ид
$res = mysql_query($sql);//запрос к базе
$f = mysql_fetch_array($res);//загоняем результат в массив зачем это нужно не понятно
$max = ($f['max(`id`)']);//но по другому не обрабатывается
$max = ($max + 1);//увеличиваем ид
$output = 'img_'.$max.'.'.$ext;//формируем новое имя файла
$input = $_FILES['image']['tmp_name'];

//обрабатываем файл как нам необходимо
$dir = $_SERVER['DOCUMENT_ROOT']."/adv_gallery/";
createphoto($input,$dir.$output);// вызов функции по работе с изображением
//обрабатываем файл как нам необходимо
}
else{echo 'Проверка №2 не пройдена';}
}
else{echo 'Проверка №1 не пройдена';}
}
else{echo 'Временного файла не существует';}
}
else{echo 'файл не получен';}
?>

Конечно сырой, но работает! Я бы ещё хотел получить совет, как ещё можно сформировать защиту.
Профиль Ответить
07.07.2012 17:47:12 Изменять размер фото Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

http://myrusakov.ru/php-loadserver-security.html
Профиль Ответить
07.07.2012 20:07:55 Изменять размер фото Сообщение #9
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Весьма поучительная статья, однако в Вашем примере кода, смею заметить, достаточно сменить расширение файла на jpg и файл превосходно загружается. Последствия могут быть печальными...
Профиль Ответить
07.07.2012 20:18:15 Изменять размер фото Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Если сервер настроить правильно, то ничего печального не будет. А по умолчанию он настроен правильно. И jpg никогда как PHP запускаться не будет. Есть там дополнительная проверка через библиотеку GD, но это уже лишнее, и даже она не 100% гарантия.
Профиль Ответить