Обрезание картинки средствами PHP. Требуется помощь

(Ответов: 1, Просмотров: 1184)
  1. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    Имеется следующий код. Я начинающий программист на PHP, поэтому просьба сильно не пинать за неиспользование очевидных решений. Сделал как нашел:)

    Поставил перед собой задачу сделать следующее:

    - есть исходная картинка file, требуется уменьшить ее до заданных размеров, именно обрезая лишнее по краям.

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

    По отдельности части работают, а вот вместе не хотят. Подскажите, в чем может быть проблема?

    Спасибо


    Код:
    <?php 
    
    //исходный файл 1920 * 1200, для примера
    
    $file = $_GET['file'];  
    
    list($width, $height, $type) = getimagesize($file);
    
    $slashPos = strrpos($file,'_');
    
    $fileName = substr($file,$slashPos);
    
    $fileName = str_replace("_", "1", $fileName);
    
    $str="Content-Disposition: attachment; filename=".$fileName;
    
    header($str); 
    
    header("Content-type: $type");
    
    $new_height = 768;
    
    $k = $height / $new_height;
    
    $new_width = $width / $k;
    
    $image_p = imagecreatetruecolor($new_width, $new_height);
    
    $image = imagecreatefromjpeg($file);
    
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
    imagejpeg($image_p, null, 100);
    
    $file = $image_p; 
    
    // создана картинка с заданной высотой, ширина чуток больше
    
    
    
    
    
    
    $end_width = 1024;
    
    $end_height = 768;
    
    list($width2, $height2, $type) = getimagesize($file); // 1228 * 768
    
    $slashPos = strrpos($file,'_');
    
    $fileName = substr($file,$slashPos);
    
    $fileName = str_replace("_", "1", $fileName);
    
    $str="Content-Disposition: attachment; filename=".$fileName;
    
    header($str); 
    
    header("Content-type: $type");
    
    $razn = $width2 - $end_width; // 234 - разница между исходным и требуемым по ширине
    
    $razn = $razn / 2; // 117 - разница в ширине с одной стороны
    
    $image_p = imagecreatetruecolor($new_width, $new_height);
    
    $image = imagecreatefromjpeg($file);
    
    imagecopyresampled($image_p, $image, 0, 0, $razn, 0, $end_width, $end_height, $width2, $height2);
    
    imagejpeg($image_p, null, 80);
    
    $file = $image_p; 
    
    $str="Content-Disposition: attachment; filename=".$fileName;
    
    header($str); 
    
    header("Content-type: application/octet-stream"); 
    
    echo file_get_contents($file); 
    
    ?>
    • 1

    Спасибо сказали:

    Seopat(09.06.2012),
  2. Критик Аватар для Gami
    • Регистрация: 06.07.2010
    • Сообщений: 248
    • Репутация: 30
    Может поможет? Небольшой кусок скрипта php, обрабатывающий изображение до определенных размеров. http://lagran.kz/archives/2534 Скрипт полностью работоспособен.
    • 1

    Спасибо сказали:

    OKyJIucT(05.06.2012),

Похожие темы

Темы Раздел Ответов Последний пост
Требуется помощь по UMI CMS
Web программирование 2 29.03.2012 01:16
Требуется помощь по UMI CMS
Вопросы от новичков 2 29.03.2012 01:16
Требуется помощь в оценки.
Поисковые системы 0 18.10.2011 12:51
Требуется помощь с NVU
Web программирование 0 12.05.2011 17:41
Ребёнку требуется помощь
Оффтоп и свободные темы 5 29.10.2010 22:58

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры