{"id":15374126,"url":"https://github.com/io-developer/php-thumbnails","last_synced_at":"2026-07-06T07:31:22.828Z","repository":{"id":56992933,"uuid":"85815654","full_name":"io-developer/php-thumbnails","owner":"io-developer","description":"Lib for thumbnailing images and watermarking","archived":false,"fork":false,"pushed_at":"2017-11-13T10:30:54.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-10T19:03:01.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/io-developer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-22T10:37:54.000Z","updated_at":"2017-03-22T14:12:23.000Z","dependencies_parsed_at":"2022-08-21T13:20:30.559Z","dependency_job_id":null,"html_url":"https://github.com/io-developer/php-thumbnails","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fphp-thumbnails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fphp-thumbnails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fphp-thumbnails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fphp-thumbnails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/io-developer","download_url":"https://codeload.github.com/io-developer/php-thumbnails/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241062605,"owners_count":19902923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T13:57:20.910Z","updated_at":"2026-07-06T07:31:22.670Z","avatar_url":"https://github.com/io-developer.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thumbnails\nPHP library for image thumbnaling and watermarking\n\n## Requirements\nPHP \u003e= 5.4\n- gd\n- iodev\\Lib\\ImageTransform (https://github.com/io-developer/php-imagetransform)\n\n\n## Usage\n\n### Defining image types\n```php\n\u003c?php\n\nclass MyImageType\n{\n    const ORIGINAL = \"\";\n    const FULLSIZE = \"fullsize\";\n    const WIDE = \"wide\";\n    const SQUARE = \"square\";\n}\n\n```\n\n### Defining thumbnailer creation\n```php\n\u003c?php\n\nuse iodev\\Lib\\Thumbnails\\ThumbnailBuilder;\nuse iodev\\Lib\\Thumbnails\\Thumbnailer;\nuse iodev\\Lib\\Thumbnails\\ThumbnailerBuilder;\n\nclass MyImageFactory\n{\n    /**\n     * @return Thumbnailer\n     */\n    public static function createThumbnailer()\n    {\n        return ThumbnailerBuilder::create()\n            -\u003esetCommonResolver($_SERVER[\"DOCUMENT_ROOT\"], \"/files/content-by-id\")\n            -\u003esetPrimaryThumbnailName(MyImageType::ORIGINAL)\n            -\u003eaddThumbnail(\n                ThumbnailBuilder::create()\n                    -\u003ename(MyImageType::ORIGINAL)\n                    -\u003esize(4096, 4096)\n                    -\u003emodeContain()\n                    -\u003eformatSource()\n                    -\u003etoThumbnail()\n            )\n            -\u003eaddThumbnail(\n                ThumbnailBuilder::create()\n                    -\u003ename(MyImageType::FULLSIZE)\n                    -\u003esize(4096, 4096)\n                    -\u003emodeContain()\n                    -\u003eformatSource()\n                    -\u003ewatermarkAdaptive(\"watermark.png\")\n                    -\u003etoThumbnail()\n            )\n            -\u003eaddThumbnail(\n                ThumbnailBuilder::create()\n                    -\u003ename(MyImageType::WIDE)\n                    -\u003esize(1280, 720)\n                    -\u003emodeCover()\n                    -\u003eformatJpeg(95)\n                    -\u003ewatermarkAdaptive(\"watermark.png\")\n                    -\u003etoThumbnail()\n            )\n            -\u003eaddThumbnail(\n                ThumbnailBuilder::create()\n                    -\u003ename(MyImageType::SQUARE)\n                    -\u003esize(150, 150)\n                    -\u003emodeCover()\n                    -\u003eformatPng()\n                    -\u003etoThumbnail()\n            )\n            -\u003etoThumbnailer();\n    }\n}\n```\n\n### Defining image class\n```php\n\u003c?php\n\nuse iodev\\Lib\\Thumbnails\\Thumbnailer;\n\nclass MyImage\n{\n    /** @var Thumbnailer */\n    private static $_thumbnailer = null;\n    \n    /**\n     * @return Thumbnailer\n     */\n    public static function getThumbnailer()\n    {\n        if (self::$_thumbnailer == null) {\n            self::$_thumbnailer = MyImageFactory::createThumbnailer();\n        }\n        return self::$_thumbnailer;\n    }\n    \n    \n    /**\n     * @param string $path\n     */\n    public function __construct( $path )\n    {\n        $m = new MyImage();\n        $m-\u003epath = $path;\n        return $m;\n    }\n    \n    /** @var string */\n    public $path = \"\";\n    \n    /**\n     * @return string\n     */\n    public function toUri( $imageType=\"\" )\n    {\n        return self::getThumbnailer()\n            -\u003eresolveLocationByName($this-\u003epath, $imageType);\n    }\n    \n    /**\n     * @return string\n     */\n    public function toFullsizeUri()\n    {\n        return $this-\u003etoUri(MyImageType::FULLSIZE);\n    }\n    \n    /**\n     * @return string\n     */\n    public function toWideUri()\n    {\n        return $this-\u003etoUri(MyImageType::WIDE);\n    }\n    \n    /**\n     * @return string\n     */\n    public function toSquareUri()\n    {\n        return $this-\u003etoUri(MyImageType::SQUARE);\n    }\n}\n```\n\n### Uploading on form submitting\n```php\n\u003c?php\n\n// For example: you need to thumbnail main image of some article. So content ID it's article ID :)\n$contentId = 123;\n$inputName = \"image-file-form-input-name\";\n$areaSet = null;\n$overlayWatermarks = true;\n\n$thumbnailer = MyImage::getThumbnailer();\n$result = $thumbnailer-\u003ethumbnailFormInput($contentId, $inputName, $areaSet, $overlayWatermarks);\n\n// thumbnailed image path to store to somewhere\n$path = $result-\u003egetPrimaryPath();\n\n$myThumbnailedImage = new MyImage($path);\n\n```\n\n### Updating\n```php\n\u003c?php\n\n$contentId = 123;\n$oldPath = \"previous-generated-thumbnail-path.jpg\";\n$areaSet = null;\n$overlayWatermarks = false;\n\n$thumbnailer = MyImage::getThumbnailer();\n$result = $thumbnailer-\u003ereThumbnailPath($contentId, $oldPath, $areaSet, $overlayWatermarks);\n\n// thumbnailed image path to save\n$newPath = $result-\u003egetPrimaryPath();\n\n$myThumbnailedImage = new MyImage($newPath);\n\n```\n\n### Using thumbnailed images\n```php\n\u003c?php\n\n$image = new MyImage(\"saved-thumbnailed-path.jpg\");\n\n// original\necho $image-\u003etoUri();\n\n// fullsized watermarked\necho $image-\u003etoFullsizeUri();\n\n// wide watermarked\necho $image-\u003etoWideUri();\n\n// square\necho $image-\u003etoSquareUri();\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fio-developer%2Fphp-thumbnails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fio-developer%2Fphp-thumbnails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fio-developer%2Fphp-thumbnails/lists"}