|
|
|
| Большая просьба помочь. Не могу уменьшить фото надо чтобы из одной картинки получилось два разных размера допустим загрузил фото если оно больше чем положено то делаем ресайз одну копию 400/400 другую 200/200 и сохраняем в разные папки всё работает но не могу сохранить и уменьшить второй экземпляр всю ночь голову морочил не чего не получается
код
<?php
header('Content-Type: text/html; charset=utf-8');
include("config.php");
$messages = array();
$imgDir = 'photo/'; // каталог для хранения изображений
@mkdir($imgDir, 0777); // создаем каталог, если его еще нет
if (isset($_POST['upload'])) {
$data = $_FILES['userfile'];
$tmp = $data['tmp_name']; //это просто для удобства
if (@file_exists($tmp)) { //итак, если файл на месте, то
$info = @getimagesize($_FILES['userfile']['tmp_name']); //берем информацию о файле
if (preg_match('{image/(.*)}is', $info['mime'], $p)) { //убеждаемся что файл есть ни что иное как изображение
$newwidth = 150; //в данную переменную мы помещаем желаемую ширину файла
$newname = $imgDir . basename($data['name']); //имя файла оставляем прежним
//осторожно! если файл с таким именем существует, то он будет перезаписан загружаемым
if ($info[0] < $newwidth){ // если ширина загужаемого изображения
//меньше заданной в переменной, просто сохраняем файл
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newname)) {
$foto = $_FILES['userfile']['name'];
$sql = "INSERT INTO entries(
img,
title,
imgbig
) VALUES(
'$newname',
'$foto',
'$newname'
)";
mysql_query("SET NAMES utf8");
mysql_query($sql) or die(mysql_error());
$messages[] = "Файл успешно загружен. ";
}
else {
$messages[] = "Ошибка загрузки файла!";
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
else {
// а если больше, то ресайзим
// функцию ресайза мы напишем дальше
if(resize($tmp, $newwidth, $newname)){
$foto = $_FILES['userfile']['name'];
/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////кусок кода который сохраняет фото большого размера //////////////////////
$imgDir = 'imagesbig/';
$newname2 = $imgDir . basename($data['name']); //имя файла оставляем прежним
move_uploaded_file($_FILES['userfile']['tmp_name'], $newname2);
$sql = "INSERT INTO entries(
img,
title,
imgbig
) VALUES(
'$newname',
'$foto',
'$newname2'
)";
mysql_query("SET NAMES utf8");
mysql_query($sql) or die(mysql_error());
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$messages[] = "Рисунок был успешно загружен и преобразован";
}
else {
$messages[] = "Произошла ошибка при загрузке файла";
}
}
}
else {
$messages[] = "Ошибка! Попытка загрузить файл недопустимого формата.";
}
}
else {
$messages[] = "Файл не был загружен.";
}
}
?>
<ul>
<?php
foreach ($messages as $val) {
echo "<li>" . $val ."</li>";
}
?>
<?php
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function resize($photo_src, $width, $name){
$parametr = getimagesize($photo_src);
list($width_orig, $height_orig) = getimagesize($photo_src);
$ratio_orig = $width_orig/$height_orig;
$new_width = $width;
$new_height = $width / $ratio_orig;
$newpic = imagecreatetruecolor($new_width, $new_height);
switch ( $parametr[2] ) {
case 1: $image = imagecreatefromgif($photo_src);
break;
case 2: $image = imagecreatefromjpeg($photo_src);
break;
case 3: $image = imagecreatefrompng($photo_src);
break;
}
imagecopyresampled($newpic, $image, f, f, f, f, $new_width, $new_height, $width_orig, $height_orig);
imagejpeg($newpic, $name, 100);
return true;
}
?>
| ; | |
|
|
|
|
|
|
|
для: zorg84
(08.12.2011 в 18:57)
| | применяйте два раза функцию к изображению.
первый раз если фото больше 400, второй когда уменьшаете до 200
<?php
list($w, $h) = getimagesize($image);
if($w > 400 or $h > 400){
// уменьшаем оригинал
// после этого, так как оригинал загружен на сайт удаляем его
unlink("путь_к_оригиналу");
}
// уменьшаем до 200
resize(ваши_параметры)
?>
|
Вы храните изображение в базе?
Храните лучше только путь к изображению
Этим Вы не проверите, является файл изображением или нет, только проверите допустимое расширение.
<?php
if (preg_match('{image/(.*)}is', $info['mime'], $p)) { //убеждаемся что файл есть ни что иное как изображение
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(09.12.2011 в 12:43)
| | спасибо | |
|
|
|