pbootcms的图片裁剪确保无论图片是横图还是竖图,都能居中裁剪

news/2024/9/29 14:53:44

解决方案

  1. 找到裁剪缩略图的方法

    • 文件位置:/core/function/file.php
    • 搜索:function cut_img,大约在447行
  2. 优化cut_img方法

    • 实现居中裁剪功能

优化代码

以下是优化后的cut_img函数代码:

// 剪切图片
function cut_img($src_image, $out_image = null, int $new_width = null, int $new_height = null, $img_quality = 90)
{// 输出地址if (! $out_image) {$out_image = $src_image;}// 读取配置文件设置if (! $new_width && ! $new_height) {return;}// 获取图片属性list($width, $height, $type, $attr) = getimagesize($src_image);// 根据图片类型创建资源switch ($type) {case IMAGETYPE_GIF:$img = imagecreatefromgif($src_image);break;case IMAGETYPE_JPEG:$img = imagecreatefromjpeg($src_image);break;case IMAGETYPE_PNG:$img = imagecreatefrompng($src_image);break;default:return;}// 计算裁剪区域$crop_width = min($width, $new_width);$crop_height = min($height, $new_height);$crop_x = intval(($width - $crop_width) / 2); // 居中裁剪$crop_y = intval(($height - $crop_height) / 2); // 居中裁剪// 创建新画布$new_img = imagecreatetruecolor($new_width, $new_height);// 创建透明画布,避免黑色背景if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_PNG) {imagealphablending($new_img, false);imagesavealpha($new_img, true);$color = imagecolorallocatealpha($new_img, 255, 255, 255, 127);imagefilledrectangle($new_img, 0, 0, $new_width, $new_height, $color);}// 裁剪并缩放imagecopyresampled($new_img, $img, 0, 0, $crop_x, $crop_y, $new_width, $new_height, $crop_width, $crop_height);// 保存新图片switch ($type) {case IMAGETYPE_GIF:imagegif($new_img, $out_image);break;case IMAGETYPE_JPEG:imagejpeg($new_img, $out_image, $img_quality);break;case IMAGETYPE_PNG:imagepng($new_img, $out_image);break;}// 释放资源imagedestroy($img);imagedestroy($new_img);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66178.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Online DDL

MySQL在线DDL特性提供了即时支持instant 、copy方式,还有原表in-place方式。有些过程中也允许并发DML。 语法:ALTER TABLE tbl_name , alter_option: {...}, ALGORITHM [=] {DEFAULT | INSTANT | INPLACE | COPY} LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}为了避免在执…

pbootcms提示提交失败,请使用POST方式提交

在PbootCMS中,如果你在模板在线留言功能中遇到“提交失败,请使用POST方式提交!”的错误,通常是因为URL名称使用了系统保留的关键字。为了避免这类问题,可以遵循以下建议: 1. 系统保留关键字 PbootCMS系统中有一些保留的关键字,这些关键字不能用作URL名称。以下是一些常见…

ElementUI中实现el-table表格列宽自适应,列根据内容自动撑满,内容不换行

一、概述 在表格宽度固定时,实现内容不换行,表格自动显示滚动条 当前显示效果: 期望实现效果: 二、实现思路 遍历表格数组,每次都构建一个隐藏的span元素,获取该元素的宽度,对比保存最大值 代码如下:```typescript /*** 表格列宽自适应* @param prop 属性* @param reco…

PbootCMS模板如何调用友情链接

在PbootCMS中,使用友情链接标签可以方便地输出指定分组的友情链接。下面是一个详细的示例,展示了如何使用该标签以及如何控制输出的内容。 友情链接标签示例 1. 基本用法{pboot:link num=3 gid=1}<a href="[link:link]" target="_blank">[link:nam…

getBeansOfType源码解析

org.springframework.beans及org.springframework.context这两个包是Spring IoC容器的基础,其中重要的类有BeanFactory,BeanFactory是IoC容器的核心接口,其职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖关系。 ApplicationContext作为BeanFactory的子…

KubeSphere 社区双周报|2024.09.13-09.26

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.09.13-09.26。 贡献者名单新晋 KubeSphere co…

pbootcms模板如何做好防护

为了提高PbootCMS模板的安全性,可以采取以下步骤进行防护: 第一步:重命名数据文件夹将data文件夹的名字换成其他名称,例如mydata。mv data mydata第二步:修改数据库配置文件打开config文件夹中的database.php文件。 将文件中的data名称改为与第一步中相同的名称(例如myda…

上传失败报错 UNKNOW: Code: 8192; Desc: stripos()

错误提示和您的解决方案提到了将 $ext 传递给 chr() 函数,这在大多数情况下是不合适的,因为 chr() 是用来从ASCII值转换为对应的字符,而 $ext 作为文件扩展名应该是直接的字符串形式。正确的做法应该是确认 $ext 是否为字符串类型,并且检查报错是否源于其他原因,比如误报或…