{"id":19621571,"url":"https://github.com/pkg6/think-image","last_synced_at":"2026-02-24T06:34:44.097Z","repository":{"id":57080391,"uuid":"488125841","full_name":"pkg6/think-image","owner":"pkg6","description":"一个不依赖任何框架的image操作类，独立thinkphp3.2.3中Image类","archived":false,"fork":false,"pushed_at":"2023-01-07T12:55:50.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-19T06:46:34.990Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/pkg6.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":"2022-05-03T08:08:11.000Z","updated_at":"2024-12-20T05:17:17.000Z","dependencies_parsed_at":"2023-02-07T05:16:22.627Z","dependency_job_id":null,"html_url":"https://github.com/pkg6/think-image","commit_stats":null,"previous_names":["tp5er/think-images"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pkg6/think-image","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkg6%2Fthink-image","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkg6%2Fthink-image/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkg6%2Fthink-image/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkg6%2Fthink-image/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pkg6","download_url":"https://codeload.github.com/pkg6/think-image/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkg6%2Fthink-image/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280923472,"owners_count":26414234,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-11T11:23:35.781Z","updated_at":"2025-10-25T07:51:08.111Z","avatar_url":"https://github.com/pkg6.png","language":"PHP","readme":"\u003e 参考thinkphp3.2.3中Image操作\n\u003e\n\u003e https://www.kancloud.cn/manual/thinkphp/1878\n\u003e\n\u003e 不依赖任何框架\n\u003e\n\u003e 一般情况下都会安装gd库\n\u003e\n\u003e 需要Imagick请安装 https://pecl.php.net/package/imagick\n\n\n## 实例化类库\n\n~~~\n$image = new \\tp5er\\Images\\Image();\n~~~\n\n默认使用GD库进行图像操作，如果需要使用Imagick库操作的话，需要改成：\n\n```\n$image = new \\tp5er\\Images\\Image(\\Think\\Image::IMAGE_IMAGICK); \n// 或者采用\n$image = new \\tp5er\\Images\\Image('Imagick');\n```\n\n## 图像操作\n\n下面来看下基础的图像操作功能的使用方法。\n\n### 打开图像文件\n\n假设当前入口文件目录下面有一个1.jpg文件\n\n使用open方法打开图像文件进行相关操作：\n\n```\n$image = \\tp5er\\Images\\Image(); \n$image-\u003eopen('./1.jpg');\n```\n\n也可以简化成下面的方式：\n\n```\n$image = new \\tp5er\\Images\\Image(\\tp5er\\Images\\Image::IMAGE_GD,'./1.jpg'); // GD库\n// 或者\n$image = new \\tp5er\\Images\\Image(\\tp5er\\Images\\Image::IMAGE_IMAGICK,'./1.jpg');  // imagick库\n```\n\n### 获取图像信息\n\n可以获取打开图片的信息，包括图像大小、类型等，例如：\n\n~~~\n$width = $image-\u003ewidth(); // 返回图片的宽度\n$height = $image-\u003eheight(); // 返回图片的高度\n$type = $image-\u003etype(); // 返回图片的类型\n$mime = $image-\u003emime(); // 返回图片的mime类型\n$size = $image-\u003esize(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度\n~~~\n\n### 裁剪图片\n\n使用crop和save方法完成裁剪图片功能。\n\n```\n//将图片裁剪为400x400并保存为corp.jpg\n$image-\u003ecrop(400, 400)-\u003esave('./crop.jpg');\n```\n\n支持从某个坐标开始裁剪，例如下面从（100，30）开始裁剪：\n\n```\n//将图片裁剪为400x400并保存为corp.jpg\n$image-\u003ecrop(400, 400,100,30)-\u003esave('./crop.jpg');\n```\n\n### 生成缩略图\n\n使用thumb方法生成缩略图\n\n~~~\n// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg\n$image-\u003ethumb(150, 150)-\u003esave('./thumb.jpg');\n~~~\n\n可以支持其他类型的缩略图生成，设置包括`\\tp5er\\Images\\Image`的下列常量或者对应的数字：\n\n~~~\nIMAGE_THUMB_SCALE     =   1 ; //等比例缩放类型\nIMAGE_THUMB_FILLED    =   2 ; //缩放后填充类型\nIMAGE_THUMB_CENTER    =   3 ; //居中裁剪类型\nIMAGE_THUMB_NORTHWEST =   4 ; //左上角裁剪类型\nIMAGE_THUMB_SOUTHEAST =   5 ; //右下角裁剪类型\nIMAGE_THUMB_FIXED     =   6 ; //固定尺寸缩放类型\n~~~\n\n#### 居中裁剪\n\n```\n// 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg\n$image-\u003ethumb(150, 150,\\tp5er\\Images\\Image::IMAGE_THUMB_CENTER)-\u003esave('./thumb.jpg');\n```\n\n#### 左上角剪裁\n\n```\n$image-\u003ethumb(150, 150,\\tp5er\\Images\\Image::IMAGE_THUMB_NORTHWEST)-\u003esave('./thumb.jpg');\n```\n\n#### 缩放填充\n\n```\n$image-\u003ethumb(150, 150,\\tp5er\\Images\\Image::IMAGE_THUMB_FILLED)-\u003esave('./thumb.jpg');\n```\n\n#### 固定大小\n\n```\n$image-\u003ethumb(150, 150,\\tp5er\\Images\\Image::IMAGE_THUMB_FIXED)-\u003esave('./thumb.jpg');\n```\n\n### 添加图片水印\n\n```\n//将图片裁剪为440x440并保存为corp.jpg\n$image-\u003ecrop(440, 440)-\u003esave('./crop.jpg');\n// 给裁剪后的图片添加图片水印（水印文件位于./logo.png），位置为右下角，保存为water.gif\n$image-\u003ewater('./logo.png')-\u003esave(\"water.gif\");\n// 给原图添加水印并保存为water_o.gif（需要重新打开原图）\n$image-\u003eopen('./1.jpg')-\u003ewater('./logo.png')-\u003esave(\"water_o.gif\"); \n```\n\nwater方法的第二个参数表示水印的位置，可以传入下列Think\\Imag类的常量或者对应的数字：\n\n```\nIMAGE_WATER_NORTHWEST =   1 ; //左上角水印\nIMAGE_WATER_NORTH     =   2 ; //上居中水印\nIMAGE_WATER_NORTHEAST =   3 ; //右上角水印\nIMAGE_WATER_WEST      =   4 ; //左居中水印\nIMAGE_WATER_CENTER    =   5 ; //居中水印\nIMAGE_WATER_EAST      =   6 ; //右居中水印\nIMAGE_WATER_SOUTHWEST =   7 ; //左下角水印\nIMAGE_WATER_SOUTH     =   8 ; //下居中水印\nIMAGE_WATER_SOUTHEAST =   9 ; //右下角水印\n```\n\n例如：\n\n```\n$image-\u003eopen('./1.jpg')-\u003ewater('./logo.png',\\tp5er\\Images\\Image::IMAGE_WATER_NORTHWEST)-\u003esave(\"water.jpg\"); \n```\n\n还可以支持水印图片的透明度（0~100，默认值是80），例如：\n\n```\n$image-\u003eopen('./1.jpg')-\u003ewater('./logo.png',\\tp5er\\Images\\Image::IMAGE_WATER_NORTHWEST,50)-\u003esave(\"water.jpg\"); \n```\n\n也可以支持给图片添加文字水印（假设在入口文件的同级目录下存在1.ttf字体文件），例如：\n\n```\n$image-\u003eopen('./1.jpg')-\u003etext('ThinkPHP','./1.ttf',20,'#000000',\\tp5er\\Images\\Image::IMAGE_WATER_SOUTHEAST)-\u003esave(\"new.jpg\"); \n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkg6%2Fthink-image","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkg6%2Fthink-image","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkg6%2Fthink-image/lists"}