140 lines
3.9 KiB
PHP
140 lines
3.9 KiB
PHP
<?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');
|
||
} |