Files
xianyan/docs/toolsapi/application/api/common.php
Developer b6441a8919 api
2026-04-27 23:47:18 +08:00

140 lines
3.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
function compressedImage($srcImgPath, $maxWidth = 0, $maxHeight = 0, $quality)
{
// 获取源图片信息
$srcInfo = getimagesize($srcImgPath);
if (!$srcInfo) {
return false;
}
// 计算目标尺寸
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[1];
if ($maxWidth > 0 && $srcWidth > $maxWidth) {
$dstWidth = $maxWidth;
$dstHeight = round($srcHeight * $dstWidth / $srcWidth);
} else {
$dstWidth = $srcWidth;
$dstHeight = $srcHeight;
}
if ($maxHeight > 0 && $dstHeight > $maxHeight) {
$dstHeight = $maxHeight;
$dstWidth = round($dstHeight * $dstWidth / $dstHeight);
}
// 创建目标图像
$dstImg = imagecreatetruecolor($dstWidth, $dstHeight);
if (!$dstImg) {
return false;
}
// 读取源图像
switch ($srcInfo[2]) {
case IMAGETYPE_JPEG:
$srcImg = imagecreatefromjpeg($srcImgPath);
break;
case IMAGETYPE_PNG:
$srcImg = imagecreatefrompng($srcImgPath);
break;
case IMAGETYPE_GIF:
$srcImg = imagecreatefromgif($srcImgPath);
break;
default:
return false;
}
if (!$srcImg) {
imagedestroy($dstImg);
return false;
}
// 复制并缩放图像
if (!imagecopyresampled($dstImg, $srcImg, 0, 0, 0, 0, $dstWidth, $dstHeight, $srcWidth, $srcHeight)) {
imagedestroy($dstImg);
imagedestroy($srcImg);
return false;
}
// 输出目标图像
switch ($srcInfo[2]) {
case IMAGETYPE_JPEG:
if (!imagejpeg($dstImg, $srcImgPath, $quality)) {
imagedestroy($dstImg);
imagedestroy($srcImg);
return false;
}
break;
case IMAGETYPE_PNG:
if (!imagepng($dstImg, $srcImgPath, 9)) {
imagedestroy($dstImg);
imagedestroy($srcImg);
return false;
}
break;
case IMAGETYPE_GIF:
if (!imagegif($dstImg, $srcImgPath)) {
imagedestroy($dstImg);
imagedestroy($srcImg);
return false;
}
break;
}
// 释放资源
imagedestroy($dstImg);
imagedestroy($srcImg);
return true;
}
function generateRandomString($nums, $type) {
$characters = array(
'1' => '0123456789abcdefghijklmnopqrstuvwxyz',
'2' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
);
$randomString = '';
$hasUppercase = false;
$hasLowercase = false;
$hasNumber = false;
for ($j = 0; $j < $nums; $j++) {
$characterSet = $characters[$type];
$randomCharacter = $characterSet[rand(0, strlen($characterSet) - 1)];
$randomString .= $randomCharacter;
// 检查是否包含大写字母、小写字母和数字
if (ctype_upper($randomCharacter)) {
$hasUppercase = true;
} elseif (ctype_lower($randomCharacter)) {
$hasLowercase = true;
} elseif (ctype_digit($randomCharacter)) {
$hasNumber = true;
}
}
// 如果$type为2且生成的字符串中不包含大写字母、小写字母和数字则在末尾添加相应字符
if ($type == 2 && (!$hasUppercase || !$hasLowercase || !$hasNumber)) {
if (!$hasUppercase) {
$randomString .= chr(rand(65, 90));
}
if (!$hasLowercase) {
$randomString .= chr(rand(97, 122));
}
if (!$hasNumber) {
$randomString .= rand(0, 9);
}
}
return $randomString;
}
function completeHTML($html) {
$dom = new DOMDocument();
// 加载HTML字符串忽略警告
@$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
// 获取完整的HTML内容
$completeHtml = $dom->saveHTML();
return html_entity_decode($completeHtml, ENT_COMPAT, 'UTF-8');
}