Привет всем. Пишу скрипт, типа доска обьявлений. По нему есть некоторые поля по типу – название товара, цена товара и все-такое. Хранится в базе данных мискл. Это я реализовал. Осталось только реализовать загрузку картинок. Каждая картинка сохраняется в трех размерах. Оригинальный, 800на600, и совсем маленькая, типа авы. Вот не знаю как реализовать загрузку картинок…
——————————
Вот это набросок, по которому грузится только одна картинка в исходном размере, но я что-то даже не пойму как. Прошу помощи комрады
<?php
// Подключаемься к базе данных
require_once ("include/sql.php");
//================Настройки============= //
$maxwidth = "300px"; // максимальная ширина картинок на превью
$fotos_dir = "fotos/"; // Директория для фотографий товаров
$foto_name = $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем
$foto_light_name = time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь
$foto_tag = "<img src=\"$foto_name\" border=\"0\">"; // Готовый тэг для вставки картинки на страницу
$foto_tag_preview = "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"; // Тот же тэг, но для превью
// Текст ошибок
$error_by_mysql = "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>";
// Начало
if(isset($_FILES["myfile"])){
if ($_FILES['myfile']['type'] == 'image/jpeg' OR $_FILES['myfile']['type'] == 'image/pjpeg' OR $_FILES['myfile']['type'] == 'image/gif'){
$myfile = $_FILES["myfile"]["tmp_name"];
$myfile_name = $_FILES["myfile"]["name"];
$myfile_size = $_FILES["myfile"]["size"] ;
$myfile_type = $_FILES["myfile"]["type"];
$error_flag = $_FILES["myfile"]["error"];
// Если ошибок не было
if($error_flag == 0)
{
$DOCUMENT_ROOT = $_SERVER['DOCMENT_ROOT'];
$upfile = getcwd()."\\fotos\\" . time()."_".basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name'])
{
//Если не удалось загрузить файл
if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
{
echo "$error_by_file";
exit;
}
}
else
{
echo 'Проблема: возможна атака через загрузку файла. ';
echo $_FILES['myfile']['name'];
exit;
}
// После удачной обработки файла, выводим сообщение
echo "<h3>Результат добавления товара:</h3> <br />";
echo "<b>Файл успешно скопирован в директорию:</b> ".$fotos_dir." <br /><b>Имя файла:</b> ".$foto_name."<br />";
echo "<br /><small>Превью загруженной картинки:</small> <br />$foto_tag_preview<br /><br />";
// Заносим путь картинки в базу данных
$q = "INSERT INTO mawina (adress) VALUES ('$foto_name')";
$query = mysql_query($q);
// Данные успешно внесены в базу данных, выводим сообщение
<form enctype="multipart/form-data" method="POST" action="ima
24 июля 2009 в 22:01
"Требуется сделать флеш-новость с php и javas?1?ript" мозг лопнул… если flash, то при чем тут JS?
24 июля 2009 в 22:01
50баксов стоить будет. за день сделаю. пример покажу
24 июля 2009 в 22:00
Здравствуйте! Требуется сделать флеш-новость с php и javas?1?ript как на //ru.uefa.com/ ??? Установить на движок DLE . Сможете всё так сделать и установить и сколько будет стоить?
Пишите в личку.
24 июля 2009 в 13:05
Спасибо парни. Вечером буду разбираться
24 июля 2009 в 13:05
используй ImageCopyResized для простого масштабирования изображений или ImageCopyResampled для масштабирования с последующим удалением шума и сглаживанием.
24 июля 2009 в 11:05
Загрузка и сохранение с другим масштабом.
Делал давно…. Посмотри, осознай суть и переделай под себя. Некоторые ф-ции берутся из других модулей, но их суть ясна или они не нужны. Расшифровывать, разжевывать не буду – лень.
——
<?php
#params:
# name – имя поля
# save_dir – куда сохранять (c "/")
# min_width- минимальный размер, при котором картинка добавлена не будет
# min_height – минимальный размер, при котором картинка добавлена не будет
# max_width- максимальный размер, к которому картинка будет приведена
# max_height – максимальный размер, к которому картинка будет приведена
# quality- качество сохраненого изображения
# caption
#err:
# >0 – ok
global $images_err;
$images_err[-1]="Файл не является фотографией";
$images_err[-2]="Фотография не добавлена, т.к. ее размер по ширине или высоте слишком мал! Добавляйте более качественные изображения, такие, на которых Вас можно разглядеть.";
$images_err[-3]="Фотография не добавлена, т.к. неподдерживаемого типа. Используйте файлы формата <b>JPEG</b>, <b>GIF</b> и <b>PNG</b>.";
$images_err[-4]="Ошибка добавления в базу даных";
function SavePostImage($params)
{
//debug("",__FILE__,__LINE__);
$dir=$_SERVER["DOCUMENT_ROOT"].$params["save_dir"];
if(@!file_exists($dir)) mkdir($dir,777);
if(@file_exists($_FILES[$params["name"]]["tmp_name"]))
{
$tmp=$_FILES[$params["name"]]["tmp_name"];
$dst=$dir."/".basename($_FILES[$params["name"]]["name"]);
$dst_old=$dst;
$sz = GetImageSize ($tmp);
if(!$sz)
{
return -1;
//SetCookMsg("Файл <b>".basename($dst_old)."</b> не является фотографией");
}
else
{
$size=$sz[0]."x".$sz[1];
$type="(".$sz[2].")";
$str=file_get_contents($tmp);
$im=ImageCreateFromString($str);;
if($im)
{
if(ImageSX($im)<@$params["min_width"]||ImageSY($im)<@$params["min_height"])
{
return -2;
// SetCookMsg("Фотография не добавлена, т.к. ее размер по ширине или высоте слишком мал! Добавляйте более качественные изображения, такие, на которых Вас можно разглядеть.");
}
else
{
$k1=1;
$k2=1;
if($sz[0]>$params["max_width"])
$k1=(double)($params["max_width"]/$sz[0]);
if($sz[1]>$params["max_height"])
$k2=(double)($params["max_height"]/$sz[1]);
$k=($k1<$k2)?$k1:$k2;
if($k!=1)
{
$sz_src=$sz;
$sz[0]=(int)($sz[0]*(double)$k);
$sz[1]=(int)($sz[1]*(double)$k);
$size=$sz[0]."x".$sz[1];
$im2=ImageCreateTrueColor($sz[0],$sz[1]);
if(!imagecopyresampled($im2,$im,0,0,0,0, $sz[0], $sz[1],$sz_src[0], $sz_src[1]))
{
// SetCookMsg("Изменение масштаба не удалось");
}
else
{
$im_tmp=$im;
$im=$im2;
$im2=$im_tmp;
// SetCookMsg("Изменение масштаба в $k раз(а). Новый размер $size.");
SetCookMsg("Размер фотографии был уменьшен");
}
imagedestroy($im2);
}
# добавляем в базу данных
24 июля 2009 в 11:05
… том 2
———
# добавляем в базу данных
// здесь было добавление в БД
if(isset($params["quality"])) $image_quality=$params["quality"];
else $image_quality=image_quality;
// $dst=ChangeFileExt($dst,"jpg");
//$dst=$dir."/".$_SERVER["user_info"]["user_id"]."_".mysql_insert_id().".jpg";
$dst=$dir."/".mysql_insert_id().".jpg";
ImageJPEG($im,$dst,$image_quality);
return mysql_insert_id();
//SetCookMsg("Фотография <b>".basename($dst_old)."</b> ($size) добавлена");
imagedestroy($im);
}
else return -3;
//SetCookMsg("Фотография не добавлена, т.к. неподдерживаемого типа. Используйте файлы формата <b>JPEG</b>, <b>GIF</b> и <b>PNG</b>.");
}
}
}
24 июля 2009 в 10:05
так в чем проблема?Попробуй просто сделать несколько копий и поменять им размер.
24 июля 2009 в 10:02
Там все понятно. Мне нужен код чтобы из одной картинки три делалось разного рзмера..
24 июля 2009 в 5:04
Код хорошо комментирован, что конкретно непонятно?
Одно только могу сказать, картинка грузится в исходном размере, и в меньший размер не пересжимается. А для превью выводится та же самая картинка, но задается ширина 300 в теге IMG. То есть исходная картинка будет выведена в уменьшенном размере, что не есть гуд.