Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Изменение размера изображения
 
 автор: SunnyDAY   (10.08.2007 в 02:56)   письмо автору
 
 

Подскажите пожалуйста,как с помощью php изменить размер изображения (ширину и высоту)?

   
 
 автор: Shiva   (10.08.2007 в 07:42)   письмо автору
 
   для: SunnyDAY   (10.08.2007 в 02:56)
 

Алгоритм cheops-а (пропорции сохраняются):

function resizeimg($filename, $smallimage, $w, $h)
  {
    // Имя файла с масштабируемым изображением
    $filename = $filename;
    // Имя файла с уменьшенной копией.
    $smallimage = $smallimage;
    // определим коэффициент сжатия изображения, которое будем генерить
    $ratio = $w/$h;
    // получим размеры исходного изображения
    $size_img = getimagesize($filename);
    // получим коэффициент сжатия исходного изображения
    $src_ratio=$size_img[0]/$size_img[1];

    // Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
    // пропорции исходного изображения
    if ($ratio<$src_ratio)
    {
      $h = $w/$src_ratio;
    }
    else
    {
      $w = $h*$src_ratio;
    }
    // создадим пустое изображение по заданным размерам
    $dest_img = imagecreatetruecolor($w, $h);
    // создаем jpeg из файла
    $src_img = imagecreatefromjpeg($filename);

    // масштабируем изображение     функцией imagecopyresampled()
    // $dest_img - уменьшенная копия
    // $src_img - исходной изображение
    // $w - ширина уменьшенной копии
    // $h - высота уменьшенной копии
    // $size_img[0] - ширина исходного изображения
    // $size_img[1] - высота исходного изображения
    imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
    // сохраняем уменьшенную копию в файл
    imagejpeg($dest_img, $smallimage);
    // чистим память от созданных изображений
    imagedestroy($dest_img);
    imagedestroy($src_img);
    return true;
}


Алгоритм Зеева Сураски (пропорции не сохраняются, изображение писывается в произвольные ширину и высоту):

function makeThumbnail($source, $destination, $width, $height)
{
    $sourceImage = @imagecreatefromjpeg($source);
    $destinationImage = imagecreatetruecolor($width, $height);
    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $width, $height, imagesx($sourceImage), imagesy($sourceImage));
    imagejpeg($destinationImage, $destination);
}

   
 
 автор: SunnyDAY   (16.08.2007 в 07:49)   письмо автору
 
   для: Shiva   (10.08.2007 в 07:42)
 

Большое спасибо

   
 
 автор: Shokan   (22.08.2007 в 07:27)   письмо автору
 
   для: SunnyDAY   (16.08.2007 в 07:49)
 

Люди, у кого есть алгоритм который сохраняет пропорцию рисунка?

   
 
 автор: devil943   (06.01.2008 в 00:53)   письмо автору
 
   для: Shiva   (10.08.2007 в 07:42)
 


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Новая страница 1</title>
</head>

<body>
<?php
function resizeimg($filename$smallimage$w$h
  { 
    
// Имя файла с масштабируемым изображением 
    
$filename $filename
    
// Имя файла с уменьшенной копией. 
    
$smallimage $smallimage
    
// определим коэффициент сжатия изображения, которое будем генерить 
    
$ratio $w/$h
    
// получим размеры исходного изображения 
    
$size_img getimagesize($filename); 
    
// получим коэффициент сжатия исходного изображения 
    
$src_ratio=$size_img[0]/$size_img[1]; 

    
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились 
    // пропорции исходного изображения 
    
if ($ratio<$src_ratio
    { 
      
$h $w/$src_ratio
    } 
    else 
    { 
      
$w $h*$src_ratio
    } 
    
// создадим пустое изображение по заданным размерам 
    
$dest_img imagecreatetruecolor($w$h); 
    
// создаем jpeg из файла 
    
$src_img imagecreatefromjpeg($filename); 

    
// масштабируем изображение     функцией imagecopyresampled() 
    // $dest_img - уменьшенная копия 
    // $src_img - исходной изображение 
    // $w - ширина уменьшенной копии 
    // $h - высота уменьшенной копии 
    // $size_img[0] - ширина исходного изображения 
    // $size_img[1] - высота исходного изображения 
    
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]); 
    
// сохраняем уменьшенную копию в файл 
    
imagejpeg($dest_img$smallimage); 
    
// чистим память от созданных изображений 
    
imagedestroy($dest_img); 
    
imagedestroy($src_img); 
    return 
true

$image resizeimg('../news/image/n_witcher.png''../news/image/small_n_witcher.png''150''150');
echo (
"
<img src=\"
$image\"><br>то, чо выдает функция<br>
<img src=\"http://o-rpg.com/news/image/n_witcher.png\"><br>исходник<br>
<img src=\"http://o-rpg.com/news/image/small_n_witcher.png\"><br>маленький<br>
"
);
?>
</body>

</html>


Вот что оно на это выдает:
http://o-rpg.com/admin/image_size.php

   
 
 автор: SHAman   (06.01.2008 в 02:51)   письмо автору
 
   для: devil943   (06.01.2008 в 00:53)
 

Вот нашел. Юзал, но писал не я. Нашел в нете. Работало. Но только jpeg, на сколько я помню.

<?php
##$src - source image
##$w - max width
##$h  - max height
##http://dmitroff.net -  new versions of this and other php scripts
extract($HTTP_GET_VARS);
if (!isset(
$q)) {
    
$quality 70;
}
else {
    
$quality $q;
}
// Content type
header('Content-type: image/jpeg');
list(
$width$height) = getimagesize($img);
$newheight $h;
$temp $height/$newheight;
$newwidth $width/$temp;
if (
$newwidth $w) {
    
$newwidth $w;
    
$temp $width/$newwidth;
    
$newheight $height/$temp;
}

$thumb imagecreatetruecolor($newwidth$newheight);
$source imagecreatefromjpeg($img);

imagecopyresampled($thumb$source0000$newwidth$newheight$width$height);

// Output
imagejpeg($thumbnull$quality);
?> 

   
 
 автор: mihdan   (07.01.2008 в 01:28)   письмо автору
 
   для: SHAman   (06.01.2008 в 02:51)
 

>Но только jpeg, на сколько я помню.
А так не видно??? imagecreatefromjpeg(), imagejpeg()

   
 
 автор: SHAman   (07.01.2008 в 02:56)   письмо автору
 
   для: mihdan   (07.01.2008 в 01:28)
 

это тупой копипаст. я даже не читал что там. Помню, что работает и ладно.

   
 
 автор: Радин А.М.   (08.01.2008 в 23:04)   письмо автору
 
   для: Shiva   (10.08.2007 в 07:42)
 

Алгоритм cheops-а у меня лично успешно работает.

Брал отсюда всю функцию, ничего не менял.

Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования