Работа с изображением и закачкой
дайте мож какие-нибуть советы, или какой-нибуть хотя бы похожий скрипт... Буду очень благодарен ..
php.net. Поиск по GD. Это расширение для работы с изображениями.
Четвёртые сутки пылают станицы...
Чё ж так долго?
Лови, друк, специально для тебя писал целых пятнадцать минут:
Код:
/**
* Функция приводит к нужным размерам картинку и записывает её в указанный файл
*
* @param String $InputFile - строка с адресом загружаемого (исходного) файла
* @param String $OutputFile - строка с адресом записываемого (выходного) файла
* @param Integer $MaxWidth - максимально допустимая ширина выходного файла
* @param Integer $MaxHeight - максимально допустимая высота выходного файла
* @param Integer $Compression - качество сжатия для JPEG
*/
function SaveAvatar($InputFile, $OutputFile, $MaxWidth, $MaxHeight, $Compression = 80){
/** Для начала определим пропорции исходной картинки */
$IFSizes = getimagesize($InputFile);
$Proportions = $IFSizes[0] / $IFSizes[1];
/** Соответственно, если результат >1 - картинка горизонтальная, иначе - вертикальная */
/** Теперь узнаем, нужно-ли её уменьшать:
* если ширина, или высота превышаюют максимально допустимые размеры,
* то начинаем над ней глумиться */
if($IFSizes[0] > $MaxWidth || $IFSizes[1] > $MaxHeight){
if($Proportions > 1){
$OFSizes[0] = $MaxWidth;
$OFSizes[1] = $MaxWidth / $Proportions;
}
elseif ($Proportions <= 1){
$OFSizes[0] = $MaxHeight * $Proportions;
$OFSizes[1] = $MaxHeight;
}
}
/** Иначе, если размеры не превышают максимальных,
* оставляем всё как есть */
else{
$OFSizes[0] = $IFSizes[0];
$OFSizes[1] = $IFSizes[1];
}
/** Таким образом, мы привели размеры, которые будут на выходе
* и создаем канву для него*/
$OutImage = imagecreatetruecolor($OFSizes[0], $OFSizes[1]);
/* Создаём канву из входящего файла */
switch ($IFSizes['mime']){
case "image/jpeg":
$OriginalImage = imagecreatefromjpeg($InputFile);
break;
case "image/gif":
$OriginalImage = imagecreatefromgif($InputFile);
break;
case "image/png":
$OriginalImage = imagecreatefrompng($InputFile);
break;
}
/* Наносим изображение на нашу выходную канву */
imagecopyresampled($OutImage, $OriginalImage, 0, 0, 0, 0, $OFSizes[0], $OFSizes[1], $IFSizes[0], $IFSizes[1]);
/*Выводим картинку в файл*/
preg_match("/^.+\.(.*)$/", $OutputFile, $arr);
if(is_array($arr) && isset($arr[1]) && is_string($arr[1])){
switch ($arr[1]){
case "jpg":
imagejpeg($OutImage, $OutputFile, $Compression);
break;
case "gif":
imagegif($OutImage, $OutputFile);
break;
case "png":
imagepng($OutImage, $OutputFile);
break;
}
}
}
* Функция приводит к нужным размерам картинку и записывает её в указанный файл
*
* @param String $InputFile - строка с адресом загружаемого (исходного) файла
* @param String $OutputFile - строка с адресом записываемого (выходного) файла
* @param Integer $MaxWidth - максимально допустимая ширина выходного файла
* @param Integer $MaxHeight - максимально допустимая высота выходного файла
* @param Integer $Compression - качество сжатия для JPEG
*/
function SaveAvatar($InputFile, $OutputFile, $MaxWidth, $MaxHeight, $Compression = 80){
/** Для начала определим пропорции исходной картинки */
$IFSizes = getimagesize($InputFile);
$Proportions = $IFSizes[0] / $IFSizes[1];
/** Соответственно, если результат >1 - картинка горизонтальная, иначе - вертикальная */
/** Теперь узнаем, нужно-ли её уменьшать:
* если ширина, или высота превышаюют максимально допустимые размеры,
* то начинаем над ней глумиться */
if($IFSizes[0] > $MaxWidth || $IFSizes[1] > $MaxHeight){
if($Proportions > 1){
$OFSizes[0] = $MaxWidth;
$OFSizes[1] = $MaxWidth / $Proportions;
}
elseif ($Proportions <= 1){
$OFSizes[0] = $MaxHeight * $Proportions;
$OFSizes[1] = $MaxHeight;
}
}
/** Иначе, если размеры не превышают максимальных,
* оставляем всё как есть */
else{
$OFSizes[0] = $IFSizes[0];
$OFSizes[1] = $IFSizes[1];
}
/** Таким образом, мы привели размеры, которые будут на выходе
* и создаем канву для него*/
$OutImage = imagecreatetruecolor($OFSizes[0], $OFSizes[1]);
/* Создаём канву из входящего файла */
switch ($IFSizes['mime']){
case "image/jpeg":
$OriginalImage = imagecreatefromjpeg($InputFile);
break;
case "image/gif":
$OriginalImage = imagecreatefromgif($InputFile);
break;
case "image/png":
$OriginalImage = imagecreatefrompng($InputFile);
break;
}
/* Наносим изображение на нашу выходную канву */
imagecopyresampled($OutImage, $OriginalImage, 0, 0, 0, 0, $OFSizes[0], $OFSizes[1], $IFSizes[0], $IFSizes[1]);
/*Выводим картинку в файл*/
preg_match("/^.+\.(.*)$/", $OutputFile, $arr);
if(is_array($arr) && isset($arr[1]) && is_string($arr[1])){
switch ($arr[1]){
case "jpg":
imagejpeg($OutImage, $OutputFile, $Compression);
break;
case "gif":
imagegif($OutImage, $OutputFile);
break;
case "png":
imagepng($OutImage, $OutputFile);
break;
}
}
}
Как воспользоваться ею, надеюсь понятно из описания. Т.е., примерно так:
Код:
SaveAvatar("/home/myaccount/tmp/inputfile.jpg", "/home/myaccount/avatars/avatar23894723876.gif", 100, 100);
http://www.codenet.ru/webmast/php/Image-Resize-GD/ - когда-то на коденете статью на эту тему писал... есть усовершенствованная версия скрипта, автоматически различающая гифы, пнг, жпег... могу помочь через мыло.
Спасибо всем за помощь , mfender ))) скрипт отлично работает , ой вау.. как же я рад)))) терь буду спокойно спать))
http://www.codenet.ru/webmast/php/Image-Resize-GD/ - когда-то на коденете статью на эту тему писал... есть усовершенствованная версия скрипта, автоматически различающая гифы, пнг, жпег... могу помочь через мыло.[/QUOTE]
Интересная статья. Я года полтора назад как-раз делал нечто подобное: у меня из больших фотографий налету thumbnails формировались, рамочка лепилась, но получилось очень громоздко. Сейчас-то, конечно всё уже в мозгах осело и успокоилось, потому получается проще и лаконичней... :)
Вот, как раз сейчас сайтец рисую простенький ( http://favorit-base.ru ): как раз там налету фотографиям приделываются рамочки, логотипчик, всё по ширине уменьшается...
[QUOTE=foxweb]
Интересная статья. Я года полтора назад как-раз делал нечто подобное: у меня из больших фотографий налету thumbnails формировались, рамочка лепилась, но получилось очень громоздко. Сейчас-то, конечно всё уже в мозгах осело и успокоилось, потому получается проще и лаконичней... :)
Вот, как раз сейчас сайтец рисую простенький ( http://favorit-base.ru ): как раз там налету фотографиям приделываются рамочки, логотипчик, всё по ширине уменьшается...