首页 > 其他分享 >对图片进行压缩处理

对图片进行压缩处理

时间:2023-06-08 15:24:37浏览次数:40  
标签:filePath 处理 压缩 fileList file small folderPath image 图片

composer require intervention/image

<?php

namespace app\api\controller;

use Intervention\Image\ImageManagerStatic as Image;

class Test extends Base
{
public function index() {

$folderPath = './upload';
$files = $this->getFilesInFolder($folderPath);
// 输出所有文件路径
foreach ($files as $file) {
$fileExtension = pathinfo($file, PATHINFO_EXTENSION);
if ($fileExtension == 'png') {
$image = Image::make($file);
// 设置压缩质量(可选)
$image->limitColors(256);
$image->encode('png', 80);
$image->save($file);
} else {
if ( class_exists('Imagick')) {
$small_image = new \Imagick($file);
$small_image->setImageCompression(\Imagick::COMPRESSION_JPEG);
$small_image->setImageCompressionQuality(90);
$small_image->writeImage($file);
$small_image->clear();
$small_image->destroy();
}
}
}
halt('执行完成!');

}


function getFilesInFolder($folderPath) {
$fileList = [];
$files = scandir($folderPath); // 获取文件夹中的所有文件和文件夹

foreach ($files as $file) {
if ($file == '.' || $file == '..') {
continue;
}

$filePath = $folderPath . '/' . $file;

if (is_dir($filePath)) { // 如果是文件夹,则递归调用函数
$fileList = array_merge($fileList, $this->getFilesInFolder($filePath));
} else { // 如果是文件,则添加到文件列表
$fileExtension = pathinfo($filePath, PATHINFO_EXTENSION);
if (in_array($fileExtension, ['ico','icon','jpg','pem','png','jpeg','svn'])) $fileList[] = $filePath;
}
}

return $fileList;
}

}

标签:filePath,处理,压缩,fileList,file,small,folderPath,image,图片
From: https://www.cnblogs.com/Abner3721/p/17466566.html

相关文章

  • python Tesseract 图片识别文字
    Python识别图片中的文字(zhihu.com)超详细解决pytesseract.pytesseract.TesseractNotFoundError:tesseractisnotinstalledorit'snotinyo...-简书(jianshu.com)......
  • 图像处理、滤镜、水印添加Sample发布
    ***基本上我不提供源代码,但是我会尽量用文字把对应的算法描述清楚****因为靠自己的努力和实践写出来的效果才真正是自己的东西如果想要源码Demo,请联系我......
  • 使用ImportBeanDefinitionRegistrar处理自定义注解将类注册到容器中
    START两个自定义注解:@Documented@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Import(LogRegistry.class)public@interfaceEnableLog{StringbasePackage()default"";}该注解的作用是扫描指定的basePackage目录中使用了@Log注解的类,并将这......
  • 自然语言处理(NLP)学习笔记——文本预处理
    自然语言处理入门1、什么是自然语言处理自然语言处理(NaturalLanguageProcessing,简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。2、自然语言处理的发展简史1950年,计算机科学之父图灵在论文中提出“机器可以思考吗”者一划时代的问题,从此促成了人类语言学与计......
  • 深入了解 HTTP 请求和响应、表单处理和验证、URL 路由和重定向、Web 服务和 API 开发,
    在Web开发中,了解HTTP请求和响应、表单处理和验证、URL路由和重定向、Web服务和API开发,以及PHP模板引擎和视图是非常重要的。本文将深入探讨这些概念,并提供相关的代码示例。1.HTTP请求和响应HTTP(超文本传输协议)是用于在客户端和服务器之间传输数据的协议。在Web开发中......
  • SpringBoot 全局异常处理
    SpringBoot全局异常处理在使用SpringBoot开发Web应用时,异常处理是必不可少的一部分。在应用中,异常可能会出现在任何地方,例如在控制器、服务层、数据访问层等等。如果不对异常进行处理,可能会导致应用崩溃或者出现未知的错误。因此,对于异常的处理是非常重要的。在SpringBoo......
  • 跨域问题在nginx 上做处理
    可以application处理也可以在nginx上处理nginxserver{listen80;server_namelocalhost;location/{add_headerAccess-Control-Allow-Origin'http://localhost:8080'always;add_headerAccess-Control......
  • C语言编程—预处理器
    预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(CPreprocessor)简写为CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了......
  • 图像压缩
    JPEG对于彩色图片处理将rgb—>YCbCr 通过一个3x1的可逆矩阵KL变换是通过nxn个元素中选取第一个元素乘以系数矩阵来得到另外元素比如将一个图片分为8x8 则将第一个图块传输乘以系数矩阵来得到另外63个图块,KL变换是MSR(均方误差)最小的变换,但系数矩阵不适用于每个图......
  • python opencv图片旋转任意角度
    pythonopencv图片旋转任意角度 importcv2#Loadtheimageimg=cv2.imread("20230222100736979.jpg")#Gettheimagedimensionsheight,width=img.shape[:2]#Settherotationangleangle=25#Calculatetherotationmatrixrotation_matrix=cv2......