Режем длинное изображение на куски на php и gd

Давно ничего не писал сюда. Не было времени. Сегодняшняя статья будет короткой и, может быть, бессмысленной. Я приведу кусок кода, который режет длинную (очень длинную) картинку на более короткие. Зачем этот скрипт может пригодиться Вам? Даже не знаю, мне пригодился :) Как минимум можете посмотреть на работу с изображениями в php с использованием библиотеки gd.

Итак, следующий код принимает на вход изображение с высотой много большей длины и разрезает его на квадратные изображения по размеру ширины. Скрипт легко модифицируется и неплохо комментирован. Пользуйтесь, кому нужно :) Думаю сам еще воспользуюсь этим небольшим куском.

<?php
set_time_limit(0); // работа может затянуться, поэтому первым делом отключим ограничения по времени выполнения скрипта
$image = __DIR__ . '/longimage.jpg'; // путь к изображению
$tosave = __DIR__ . '/jpg/'; // куда складывать куски
$topmargin = -20; // отступ сверху на каждом куске, кроме 1го
 
 
$sizes = getimagesize($image); // узнаем размеры исходного изображения
$ext = pathinfo($image, PATHINFO_EXTENSION); // его расширение
$types = array(1 => 'GIF', 2 => 'JPG', 3 => 'PNG');
$mime = $types[$sizes[2]];
 
$imagecreate = 'imagecreatefrom' . $mime; 
$im = $imagecreate($image); // загружаем изображение
 
$i = 0;
 
while ($i<$sizes[1]) { // пока не прошлись по всей высоте изображения
    $out = imagecreate($sizes[0], $sizes[0]); // результирующее изображение
    imagecopy($out, $im, 0, 0, 0, $i, $sizes[0], $sizes[0]); // копируем на результат кусок исходного
    $image_func = 'image' . $mime; 
    $image_func($out, $tosave . 'image-' . $i . '.' . $ext); // сохраняем на диск
    $i += $sizes[0] + $topmargin; // перемещаемся к следующему участку
    echo $i . ' '; flush(); // покажем что что-то сделали
}
 
echo 'done'; // работа завершена
Запись опубликована в рубрике PHP & MySQL с метками , , . Добавьте в закладки постоянную ссылку.

2 комментария: Режем длинное изображение на куски на php и gd

  1. SsS говорит:

    Скопировал код в файл jpg.php. Ни чего не менял. Графический файл назвал именем указанном в скрипте. Папку создал по имени указанном в скрипте.
    Не работает.

    Warning: explode() expects parameter 2 to be string, array given in /var/www/user1/data/www/…/jpg.php on line 8

    Fatal error: Call to undefined function imagecreatefrom() in /var/www/user1/data/www/…/jpg.php on line 11

Добавить комментарий для SsS Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">