Light image resizer

Crop

To to crop an image:

$image = new ImageResize('image.jpg');
$image->crop(200, 200);
$image->save('image2.jpg');

This will scale the image to as close as it can to the passed dimensions, and then crop and center the rest.

In the case of the example above, an image of 400px × 600px will be resized down to 200px × 300px, and then 50px will be taken off the top and bottom, leaving you with 200px × 200px.

Crop modes:

Few crop mode options are available in order for you to choose how you want to handle the eventual exceeding width or height after resizing down your image.
The default crop mode used is the .
As a result those pieces of code are equivalent:

$image = new ImageResize('image.jpg');
$image->crop(200, 200);
$image->save('image2.jpg');
$image = new ImageResize('image.jpg');
$image->crop(200, 200, true, ImageResize::CROPCENTER);
$image->save('image2.jpg');

In the case you have an image of 400px × 600px and you want to crop it to 200px × 200px the image will be resized down to 200px × 300px, then you can indicate how you want to handle those 100px exceeding passing the value of the crop mode you want to use.

For instance passing the crop mode will result as 100px taken off the bottom leaving you with 200px × 200px.

$image = new ImageResize('image.jpg');
$image->crop(200, 200, true, ImageResize::CROPTOP);
$image->save('image2.jpg');

On the contrary passing the crop mode will result as 100px taken off the top leaving you with 200px × 200px.

$image = new ImageResize('image.jpg');
$image->crop(200, 200, true, ImageResize::CROPBOTTOM);
$image->save('image2.jpg');

Freecrop:

There is also a way to define custom crop position.
You can define $x and $y in method:

$image = new ImageResize('image.jpg');
$image->freecrop(200, 200, $x =  20, $y = 20);
$image->save('image2.jpg');

Quality

The properties and are available for you to configure:

$image = new ImageResize('image.jpg');
$image->quality_jpg = 100;
$image->resize(800, 600);
$image->save('image2.jpg');

You can also pass the quality directly to the , and methods:

$image = new ImageResize('image.jpg');
$image->crop(200, 200);
$image->save('image2.jpg', null, 100);

$image = new ImageResize('image.jpg');
$image->resizeToWidth(300);
$image->output(IMAGETYPE_PNG, 4);

$image = new ImageResize('image.jpg');
$image->scale(50);
$result = $image->getImageAsString(IMAGETYPE_PNG, 4);

We’re passing for the image type in the example above to skip over it and provide the quality. In this case, the image type is assumed to be the same as the input.

Loading and saving images from string

To load an image from a string:

$image = ImageResize::createFromString(base64_decode('R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw=='));
$image->scale(50);
$image->save('image.jpg');

You can also return the result as a string:

$image = ImageResize::createFromString(base64_decode('R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw=='));
$image->scale(50);
echo $image->getImageAsString();

Magic is also supported:

$image = ImageResize::createFromString(base64_decode('R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw=='));
$image->resize(10, 10);
echo (string)$image;

Инструкция по применению

Resize — густой крем белого цвета с легким кремовым оттенком и приятным запахом трав. Он быстро поглощается кожей, оказывая терапевтическое действие спустя несколько минут. К каждой упаковке приложена подробная инструкция по применению, рекомендациям которой необходимо следовать.

Использовать препарат несложно:

  • распределить крем тонким слоем на проблемных участках, втереть легкими массирующими движениями;
  • обмотать тело пищевой пленкой в тех областях, где было нанесено средство;
  • подождать 20 минут, смыть крем теплой водой с кожи, просушить ее.

Диетологи часто рекомендуют пациентам проводить эти 20 минут не за просмотром сериалов, а выполняя легкую разминку. Это позволит значительно ускорить процесс похудения. Длительность терапевтического курса — 2 недели. Разрешается использовать Resize до 2 раз в день, наносить его непосредственно перед тренировками. Следует учесть, что в первые минуты после обертывания может возникнуть легкое жжение, которое исчезнет спустя пару минут.

Filters

You can apply special effects for new image like blur or add banner.

$image = new ImageResize('image.jpg');

// Add blure
$image->addFilter(function ($imageDesc) {
    imagefilter($imageDesc, IMG_FILTER_GAUSSIAN_BLUR);
});

// Add banner on bottom left corner
$image18Plus = 'banner.png'
$image->addFilter(function ($imageDesc) use ($image18Plus) {
    $logo = imagecreatefrompng($image18Plus);
    $logo_width = imagesx($logo);
    $logo_height = imagesy($logo);
    $image_width = imagesx($imageDesc);
    $image_height = imagesy($imageDesc);
    $image_x = $image_width - $logo_width - 10;
    $image_y = $image_height - $logo_height - 10;
    imagecopy($imageDesc, $logo, $image_x, $image_y, , , $logo_width, $logo_height);
});

… с помощью ресемплинга методом сверток. Что?

Чтобы было понятно, что конкретно нуждалось в оптимизации, я расскажу, что такое ресемплинг свертками. Свертка (правильно говорить , т.к. пиксели изображения дискретны) — это очень простая математическая операция. У нас есть какой-то ряд значений №1 (коэффициенты) и ряд значений №2 (данные, в нашем случае интенсивность каналов пикселей). Результат свертки этих двух рядов будет сумма произведений всех членов попарно. Вот так просто — сумма произведений. Матан закончился, не успев начаться.

Осталось понять, как именно эта операция связана с ресайзом. Ряд значений №2 — это ряд пикселей исходного изображения. Ряд значений №1 — это коэффициенты, получающиеся из фильтра. Фильтр — это такая функция, которая определяет, как именно мы будем сворачивать значения. Может быть вы замечали в окошке ресайза в Фотошопе или другом графическом редакторе выпадающее меню с фильтрами — билинейный, бикубический, иногда Ланцош. Это и есть этот фильтр. А вот получившееся в результате свертки значение — это интенсивность одного канала одного пикселя конечного изображения. Т.е. чтобы получить изображение размером M×N пикселей, нам нужно сделать M×N×C операций свертки, где С — количество цветовых каналов. Да, посчитать весь пиксель одной операцией не получится, значения разных каналов независимы и должны считаться отдельно.

Функции фильтров не бесконечны, их значения не равны нулю лишь в центральной части: для билинейного фильтра это диапазон значений от –1 до 1; для бикубического от –2 до 2, для Ланцоша от –3 до 3 (правда бывают и другие разновидности Ланцоша).

Эти числа называют окном фильтра, т.к. фильтр применяется только в этом диапазоне, а за его пределами равен нулю. Соответственно ряд исходных пикселей, необходимый для свертки, берется в радиусе размером в окно фильтра помноженном на коэффициент уменьшения (или на единицу, если происходит увеличение). Думаю, это лучше объяснить на примере. Нам нужно уменьшить изображение шириной 2560 пикселей до ширины 2048, используя бикубический фильтр. Допустим, мы хотим найти значение 33-го пикселя конечного изображения. У бикубического фильтра размер окна равен двум, а коэффициент уменьшения получается 2560/2048 = 1,25, поэтому нам нужно будет взять строку пикселей исходного изображения от до . Т.е. с 38-го по 44-й пиксель. Для этих же пикселей высчитываются значения коэффициентов.

До этого момента я говорил о ряде коэффициентов и ряде пикселей, упуская из виду факт, что изображение — это вообще-то двумерная структура. И вроде по логике, сворачивать нужно не линию, а какую-то область исходного изображения. Но одно из свойств свёрток заключается в том, что операцию можно провести отдельно по вертикали и по горизонтали, сделав два прохода. Грубо говоря, это позволяет уменьшить сложность одной свертки с O(n²) до O(2n) (на самом деле меньше, но все равно существенно).

Фиксированное ядро

Некоторые приложения и библиотеки для работы с графикой пользуются такой хитростью: они как бы используют для ресайза те же фильтры, что и при ресайзе свертками (бывают, например, билинейный, бикубический и фильтр Ланцош), но при уменьшении изображения не увеличивают ядро фильтра адаптивно. В результате для построения любой точки конечного изображения используется только 4 пикселя исходного изображения при билинейном фильтре, при бикубическом — 16, с 3-лобным фильтром Ланцоша — 36. То есть время работы тоже получается константным относительно исходного размера.

Вот только такой подход работает для уменьшения примерно до 2 раз, а дальше результат мало чем отличается от «ближайшего соседа».

Из 4928×3280 в 256×170 с билинейным фильтром с фиксированным ядром.

И говоря «мало чем отличается от „ближайшего соседа“» я имею в виду не только то, что он такой же рваный и зернистый, я имею в виду, что он правда почти совпадает с результатом «ближайшего соседа». Откройте обе картинки в соседних вкладках браузера и попереключайте между ними, картинки почти совпадают. Может даже показаться, что где-то ошибка, что так быть не должно, потому что с фиксированным ядром интерполируется 4 пикселя, а не тупо берется первый попавшийся, и результат должен быть ближе к оригиналу. Но ошибки тут нет и вот почему:

Точки, которые будут интерполироваться при уменьшении до 20×13.

Это точки исходного изображения, по которым строится конечное. Их стало больше в 4 раза, но они расположены все в тех же местах, что и при методе ближайшего соседа. То есть скорее всего, мы не получим новой информации об изображении. Можно попытаться еще увеличить количество точек исходного изображения, участвующих в процессе, применив бикубический фильтр, но результат снова будет почти таким же и даже еще чуть-чуть более рваным, потому что в бикубическом фильтре крайние пиксели берутся с отрицательными коэффициентами.

Из 4928×3280 в 256×170 с бикубическим фильтром с фиксированным ядром.

Как не сложно догадаться, сложность и время выполнения при использовании фильтров с большим охватом значительно растет, в то время как конечное изображение почти не меняется. Все три следующие примера дают примерно одинаковую картинку, а вот время работы у них отличается до 20 раз.

Тут я симулировал ресайз с фиксированным ядром с помощью аффинных преобразований. Но некоторые приложения и библиотеки правда делают это: используют для уменьшения более дорогие фильтры, результат которых почти равен методу ближайшего соседа. Так делает OpenCV, так делают браузеры, когда рисуют изображение на канве, так делают видеокарты при текстурировании без mip-уровней. Потому что хоть время и большее, но оно константное относительно разрешения исходного изображения. Ну а качество? Для качества есть свертки.

Состав Resize

Для формирования густого крема производитель воспользовался концентрированными извлечениями из растений с мощными лечебными свойствами. Они воздействуют на жировые отложения сразу после проникновения в кожу. Фитоэкстракты насыщены биологически активными веществами, разгоняющими метаболизм сразу после нанесения «Ресайз» на проблемные зоны.

Столь выраженный эффект обеспечивают такие компоненты:

  • колеус форсколии. Активизирует процесс борьбы с висцеральным жиром, препятствует формированию растяжек на коже из-за быстрого похудения, стимулирует процессы внутриклеточного очищения и регенерации;
  • капсаицин из красного стручкового перца. Обеспечивает приток крови, что приводит к повышению местной температуры. Мощное термическое воздействие стимулирует ускоренное сжигание жира, восстановление кожи, пораженной целлюлитом;
  • пиколинат хрома. Улучшает усвоение других биоактивных веществ, эвакуирует шлаки и токсины, растворяет вредные минеральные соли, удерживает в коже так необходимую ей влагу;
  • фитоэкстракт гуараны. Повышает выработку коллагена и гиалуроновой кислоты, что полностью исключает обвисание кожи при быстром снижении веса, придает ей упругость и эластичность;
  • L-карнитин. Восполняет в дерме и эпидермисе запасы кислорода и питательных веществ, разглаживает целлюлитные растяжки за счет ускорения метаболических процессов;
  • морские водоросли из рода спирулина. Улучшают кроветворение, выводят из подкожной клетчатки лишнюю воду и токсические вещества, образующиеся при расщеплении жира.

«Ресайз» содержит витамины, микро- и макроэлементы, которые нивелируют потерю полезных веществ во время сжигания жира. Даже после резкого снижения веса кожа выглядит не обвисшей, а подтянутой, упругой и увлажненной.

Resize

To scale an image, in this case to half it’s size (scaling is percentage based):

$image = new ImageResize('image.jpg');
$image->scale(50);
$image->save('image2.jpg')

To resize an image according to one dimension (keeping aspect ratio):

$image = new ImageResize('image.jpg');
$image->resizeToHeight(500);
$image->save('image2.jpg');

$image = new ImageResize('image.jpg');
$image->resizeToWidth(300);
$image->save('image2.jpg');

To resize an image according to a given measure regardingless its orientation (keeping aspect ratio):

$image = new ImageResize('image.jpg');
$image->resizeToLongSide(500);
$image->save('image2.jpg');

$image = new ImageResize('image.jpg');
$image->resizeToShortSide(300);
$image->save('image2.jpg');

To resize an image to best fit a given set of dimensions (keeping aspet ratio):

$image = new ImageResize('image.jpg');
$image->resizeToBestFit(500, 300);
$image->save('image2.jpg');

All resize functions have option which is set to false by default.
You can enable by passing to any resize function:

$image = new ImageResize('image.jpg');
$image->resize(500, 300, $allow_enlarge = True);
$image->save('image2.jpg');

If you are happy to handle aspect ratios yourself, you can resize directly:

$image = new ImageResize('image.jpg');
$image->resize(800, 600);
$image->save('image2.jpg');

This will cause your image to skew if you do not use the same width/height ratio as the source image.

Почему все же свертки

Вообще, фраза «ресайз изображения» несет в себе минимум информации о том, что нужно сделать. Она говорит, что мы должны получить изображение конечного размера, используя оригинальное, с сохранением геометрии изображенных объектов. Но использовать исходное изображение можно по-разному. Можно например для каждого конечного пикселя поставить в соответствие один пиксель из исходного и взять его без изменений. Это называется метод ближайшего соседа. Картинка получается грубой, рваной, неприятной:

Так происходит потому, что в конечном изображении была использована очень малая часть исходных пикселей (на приведенном выше примере меньше одного процента). Информацию из тех пикселей, которые не попали в конечное изображение, мы потеряли.

А вот как выглядит ресемплинг с помощью сверток:

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

О задаче

Под «ресайзом изображений» я понимаю изменение размеров изображения с помощью ресемплинга методом сверток. Ресемплинг производится над массивом 8-битных RGB пикселей в память, без учета декодирования и кодирования изображений, однако с учетом выделения памяти под конечное изображение и с учетом подготовки коэффициентов, необходимых для конкретной операции.

Вот так строго. Никаких трюков (вроде декодирования из джипега изображения меньшего размера) и никакого комбинирования алгоритмов, только честное измерение работы конкретного алгоритма. Трюки и оптимизации частных случаев можно применить позже, они не предмет рассмотрения этой серии статей.

Other photo editing tools

Create Photo Collages

Create collages with a large selection of layouts and use advanced settings to customize the design. The process of creating a collage is very simple: just upload the photos to the layout, swap them if necessary, adjust the color of the border or add a background, also optionally you can add text or clipart to the collage.

Create a Collage

Crop Image

Need to crop an image? Easily! Use our editor, which will help you quickly crop the image in the desired area. You can also select the aspect ratio from the list, for example, a 3×4 photo or a YouTube cover, this will make the cropping as accurate as possible.

Crop Image

Flip and Rotate Image

Need to quickly flip the image? Then use our simple editor, which will help you quickly flip the image vertically or horizontally, as well as rotate the image to the right or left.

Flip Image

Blurry Photo Maker

Want to create a blurry image? Then this editor will help you to do this very quickly and efficiently. Just upload an image and adjust the depth of field of the blur and in a moment you will get the image in a blurry style. This tool will be useful if you need to make a blur background or just edit a photo.

Blur Image

Photo Filters and Effects

This editor has a large set of photo filters and effects that will make your photo in a special style. Using this tool, you can get a retro photo style of the beginning of the 20th century or make a bright photo in a disco style with color gradients and hundreds of design options!

Photo Filters

Add Frame to Photo

Use a large set of beautiful photo frames to make your photo in a unique style. To add a frame to a photo, simply open the editor and select your favorite frame from the list (for example, a vintage or grunge frame), or just add a color border.

Photo Frames

Photo to Art

This amazing tool based on neural networks will allow you to transform your photo into a picture of a famous artist in a few seconds. These filters have different artistic styles and are based on paintings by famous artists, so don’t miss the chance to get even closer to art!

Create Art Photo

Photo Overlays and Textures

Our photo editor has dozens of unique textures that you can overlay on your photo and adjust the transparency level. All overlays are sorted by category, so it will be easy for you to choose the best option for your photo or image.

Make Overlay

Add Text to Photo

This tool will be useful if you need to quickly add one or more texts to the photo. Take advantage of a wide variety of fonts that reflect your mood best. To get started, simply upload the photo to the editor and select a font from the list, enter the text and adjust its color and size.

Add Text to Photo

Add Clipart to Photo

This tool will make the mood for any photo or image. Choose a suitable sticker from hundreds of types of clipart and add to your photo with one click. Drag and drop stickers inside the photo and customize them as you wish.

Add Clipart

Add Vignette to Photo

With this tool, you can quickly add a vignette to a photo and adjust the brightness and saturation settings. The vignette makes the edges of the photo slightly darkened and increases the visual focus of the center of the photo.

Vignette Photo

Rounded Image

This simple tool allows you to quickly round the corners of any image. To do this, you need to adjust the radius of rounding of the corners and choose a background color, or make a transparent background.

Round Corners

Tilt Shift Photo Effect

Want to make a tilt shift effect for a photo? Try the Tilt Shift tool by our free photo editor, which allows you to quickly adjust the amount of focus and the depth of image blur. You no longer need to download additional software to achieve the Tilt Shift effect.

Tilt Shift

Rate this tool:

Awful
Poor
Average
Good
Excellent

4.8 / 5

66 votes

FastStone Photo Resizer для windows на русском

Версия Платформа Язык Размер Формат Загрузка
*FastStone Photo Resizer на Русском для Windows скачайте бесплатно!
  
FastStone Photo Resizer
Windows English 1,5MB .exe
  
FasStone Photo Resizer Portable
Windows English 1,5MB .zip

Скачать

Описание FastStone Photo Resizer

FastStone Photo Resizer — это конвертор и органайзер изображений с возможностью изменения их размеров от компании FastStone Soft. Программа позволяет изменять габариты изображений и конвертировать их из одного формата в другой. Если фотография была сделана с неправильного ракурса, вы можете перевернуть ее, тем самым частично решить эту проблему. Опция «Пакетная обработка» предоставляет возможность пользователю переименовывать сразу несколько фотофайлов, накладывать на них цветовые эффекты и производить с картинками другие действия.

Одним из преимуществ FastStone Photo Resizer является поддержка сенсорного интерфейса, которая стала возможна в одном из последних обновлений, что особенно актуально для пользователей Windows 8. При необходимости, вы можете добавить текст и водяные знаки на фотографию. Предусмотрены все необходимые инструменты для редактирования изображений, а именно изменения контрастности, добавления эффектов и обрезки фотографий. Применяемая технология Drag&Drop обеспечивает быструю и стабильную работу FastStone Photo Resizer. Кроме того, к любой картинке может быть добавлена рамка. Данная программа имеет интуитивно понятный интерфейс, а потому проста в управлении для новичков.

Функционал

FastStone Photo Resizer предоставляет все необходимые инструменты для редактирования, обработки и нанесения водяных знаков. Пользователь может конвертировать фотофайл из одного формата в другой, что и является одной из самых основных задач этого органайзера

Возможно добавление текста к любой картинке.
Также, вам стоит обратить внимание на следующие функции:

  • Поддержка функции Drag and Drop обеспечивает простоту перемещения изображений из папок в программу;
  • Изменение контрастности цвета полностью настраивается пользователем в зависимости от его предпочтений;
  • Возможность корректировки четкости изображений с помошью технологии USM Unsharp Mask;
  • Пакетная обработка изображений предоставляет возможность редактирования нескольких фотографий одновременно;
  • Загрузка ранее установленных настроек программы из файла удобна, например, при переустановке программного продукта.

Поддерживаемые типы файлов

FastStone Photo Resizer поддерживает работу со следующими форматами:
BMP, JPEG, GIF, TIFF, PNG и JPEG2000.

Скриншоты

FastStone Photo Resizer скачать для Windows

FastStone Photo Resizer скачать для Windows 10FastStone Photo Resizer скачать для Windows 8.1FastStone Photo Resizer скачать для Windows 8 FastStone Photo Resizer скачать для Windows 7FastStone Photo Resizer скачать для Windows VistaFastStone Photo Resizer скачать для Windows XP

Похожие программы

Adobe Reader

Universal Document Converter

RasterVect

Free 3D Photo Maker

AVS Document Converter

Домашняя Фотостудия

WinDjView

Free DWG Viewer

Vextractor

Free Image Convert and Resize

Ashampoo Photo Commander

Fresh View

Мастер коллажей

Sweet Home 3D

Adobe Photoshop Lightroom

Астрон Дизайн

GIMP

VisiCon

SmallFoto

FastStone Photo Resizer
Konvertor

Photoscape

Faststone Image Viewer

XnView

IrfanView

ACDSee

Picasa

Autodesk 3DS Max

Cinema 4D Studio

Google SketchUp

Blender

Adobe Photoshop

PRO100

CorelDRAW

Adobe Illustrator

Paint.net

Графические редакторы

3D графика

Просмотр

Графические конвертеры

Setup

This package is available through Packagist with the vendor and package identifier the same as this repo.

{
    "require": {
        "gumlet/php-image-resize": "1.9.*"
    }
}

If you are still using PHP 5.3, please install version and if you are using PHP 5.4, please install version of this library.

WebP support is added with PHP and current version of library supports that. If you are facing issues, please use version of this library.

Otherwise:

include '/path/to/ImageResize.php';

Because this class uses namespacing, when instantiating the object, you need to either use the fully qualified namespace:

$image = new \Gumlet\ImageResize();

Or alias it:

use \Gumlet\ImageResize;

$image = new ImageResize();

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий