PHP getimagesize函数和image_type_to_extension函数
获取图片尺寸
getimagesize($image_path)
Array(
[0] => 256 //宽
[1] => 256 //高
[2] => 3 //IMAGETYPE常量,代表某种图片类型
[3] => width="256" height="256"
[bits] => 8
[mime] => image/png
)
根据 getimagesize() 返回的 IMAGETYPE常量 获取图片类型(扩展名)
image_type_to_extension(IMAGETYPE常量)
没有匹配结果时返回 false
1: .gif 2: .jpeg 3: .png 4: .swf 5: .psd 6: .bmp 7: .tiff 8: .tiff 9: .jpc 10: .jp2 11: .jpx 12: .jb2 13: .swf 14: .iff 15: .bmp 16: .xbm 17: .ico 18: .webp
apifox.com之通过JSON Schema设置数组类型的复杂form_data参数
{
"type": "array",
"items": {
"type": "object",
"properties": {
"goods_type": {
"type": "string",
"title": "材料类型",
"enum": [
"material",
"semifinished"
],
"x-apifox": {
"enumDescriptions": {
"material": "原料",
"semifinished": "原料型产品"
}
}
},
"goods_classid": {
"type": "integer",
"title": "材料类别id"
},
"goods_name": {
"type": "string",
"title": "材料名称",
"description": "仅原料型产品有"
},
"goods_weight": {
"type": "number",
"title": "材料重量",
"description": "最多三位小数,单位:t"
}
},
"required": [
"goods_type",
"goods_classid",
"goods_weight"
],
"x-apifox-orders": [
"goods_type",
"goods_classid",
"goods_name",
"goods_weight"
]
}
}
PHP try...catch无效的原因及解决办法
来源:百度文心一言
在PHP中,try-catch块主要用于捕获和处理异常(Exceptions),而不是用于捕获和处理警告(Warnings)或通知(Notices)。警告和通知是PHP的错误报告机制的一部分,它们指示代码中存在潜在的问题,但通常不会阻止脚本的执行。
如果你的PHP代码中的try-catch块看起来没有按预期工作,并且直接显示了警告(Warning),这通常意味着:
1. 抛出的不是异常:你的代码可能在try块中产生了警告,而不是抛出了一个异常。警告不会自动被catch块捕获。
2. 异常未被正确抛出:如果你预期某个函数或操作会抛出异常,但实际上它没有抛出(可能因为某些条件未满足),那么catch块也不会捕获任何内容。
解决方案
1. 检查错误类型:
确保在try块中发生的是异常(Exception)而不是警告(Warning)或通知(Notice)。
如果你想处理警告或通知,你可能需要调整PHP的错误报告级别,或者使用其他机制(如错误处理函数set_error_handler())来捕获这些错误。
2. 正确抛出异常:
确保在try块中的代码在遇到问题时能够抛出异常。
如果你的代码依赖于第三方库或框架中的函数来抛出异常,请确保该函数在失败时确实会抛出异常。
3. 使用错误处理函数:
如果需要捕获警告或通知,你可以使用set_error_handler()函数来设置一个自定义的错误处理函数。这个函数可以捕获错误,并可以根据需要抛出异常。
set_error_handler(function($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)){
// This error code is not included in error_reporting
return;
}
throw new ErrorException($message, 0, $severity, $file, $line);
});
$arr=array('a');
try{
trim($arr);
}catch(Exception $e) {
echo var_export($e,true);
echo $e->getMessage(), $e->getFile();
}
4. 检查PHP错误报告设置:确保你的PHP配置(php.ini)或运行时配置中的错误报告设置符合你的需求。你可以通过error_reporting()函数来动态调整错误报告级别。
获取微信公众号关注地址
来源:https://blog.csdn.net/weixin_42645230/article/details/114372624 第一步:将微信公众号的任意一篇推文链接复制出来,在浏览器中打开 第二步: 按住F12(window系统)打开代码审查 ,将代码全部复制出来放到一个新建的txt文件,全局搜索__biz,将后面跟的参数复制下来 第三步:将第二步获取的__biz参数放到下面位置 ,该链接即为关注页面的链接 本文发布于 2021-03-04 亲测有效 https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=这里第二步拿到的参数&scene=110#wechat_redirect
使用下面链接也可以: 20240717测试有效
https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=参数#wechat_redirect
用jQuery对html转义字符进行反转义
$('<div></div>').html(转义后的html).text();解决 Kindle 导入电子书封面显示为"暂无图片"的问题
KINDLE相关问题这上面都有:https://bookfere.com/buy
转自:https://zhuanlan.zhihu.com/p/570024330
方法一:
下载电子书后使用Calibre软件打开,选中电子书右键发送到Kindle设备,封面就有了,结束!
使用这种方式都不用关闭Kindle的飞行模式来联网下载封面,如果没有Kindle要求的Azw3格式的电子书的话,使用Calibre的Convert books还能随意转换电子书格式。
方法二:
用数据线连接电脑与Kindle,打开Kindle磁盘 Windows与macOS是差不多的,把书籍拖入documents文件夹中后将Kindle与电脑断开连接,建议下载azw3格式的电子书。
这时打开Kindle就能看到新导入的书了,将Kindle连接Wi-Fi后会自动下载书籍封面,因为导入的书在亚马逊书城中不存在,就会显示一张暂无图片的默认封面。
这时再将Kindle与电脑连接,打开隐藏文件夹System后打开thumbnails文件夹,这里是存放电子书的封面文件夹,看到一张 暂无图片文字 的图片,复制此文件名称后删除此图片,将下载好的电子书封面图片拖进来重命名为刚刚复制好的名称就好了。
这时断开Kindle与电脑的连接,打开Kindle就能看到电子书的封面就是自己刚刚替换掉的那张了
datetimepicker手册
来源:
https://xdsoft.net/jqplugins/datetimepicker/
https://github.com/xdan/datetimepicker
Full options list
| Name | default | Descr | Ex. |
|---|---|---|---|
| lazyInit | false | Initializing plugin occurs only when the user interacts. Greatly accelerates plugin work with a large number of fields | |
| parentID | 'body' | Attach datetimepicker to this element, which can be either a selector or a DOM/JQuery element | |
| value | null | Current value datetimepicker. If it is set, ignored input.value | |
| lang | en | Language i18n ar - Arabic az - Azerbaijanian (Azeri) bg - Bulgarian bs - Bosanski ca - Català ch - Simplified Chinese cs - Čeština da - Dansk de - German el - Ελληνικά en - English en-GB - English (British) es - Spanish et - "Eesti" eu - Euskara fa - Persian fi - Finnish (Suomi) fr - French gl - Galego he - Hebrew (עברית) hr - Hrvatski hu - Hungarian id - Indonesian it - Italian ja - Japanese ko - Korean (한국어) kr - Korean lt - Lithuanian (lietuvių) lv - Latvian (Latviešu) mk - Macedonian (Македонски) mn - Mongolian (Монгол) nl - Dutch no - Norwegian pl - Polish pt - Portuguese pt-BR - Português(Brasil) ro - Romanian ru - Russian se - Swedish sk - Slovenčina sl - Slovenščina sq - Albanian (Shqip) sr - Serbian Cyrillic (Српски) sr-YU - Serbian (Srpski) sv - Svenska th - Thai tr - Turkish uk - Ukrainian vi - Vietnamese zh - Simplified Chinese (简体中文) zh-TW - Traditional Chinese (繁體中文) | |
| format | Y/m/d H:i | Format datetime. More Also there is a special type of «unixtime» | |
| formatDate | Y/m/d | Format date for minDate and maxDate | |
| formatTime | H:i | Similarly, formatDate . But for minTime and maxTime | |
| step | 60 | Step time | |
| closeOnDateSelect | 0 | | |
| closeOnWithoutClick | true | | |
| validateOnBlur | true | Verify datetime value from input, when losing focus. If value is not valid datetime, then to value inserts the current datetime | |
| timepicker | true | | |
| datepicker | true | | |
| weeks | false | Show week number | |
| theme | 'default' | Setting a color scheme. Now only supported default and dark theme | |
| minDate | false | | |
| maxDate | false | | |
| startDate | false | calendar set date use starDate | |
| defaultDate | false | if input value is empty, calendar set date use defaultDate | |
| defaultTime | false | if input value is empty, timepicker set time use defaultTime | |
| minTime | false | | |
| maxTime | false | | |
| allowTimes | [] | | |
| mask | false | Use mask for input. true - automatically generates a mask on the field 'format', Digit from 0 to 9, set the highest possible digit for the value. For example: the first digit of hours can not be greater than 2, and the first digit of the minutes can not be greater than 5 | |
| opened | false | ||
| yearOffset | 0 | Year offset for Buddhist era | |
| inline | false | ||
| todayButton | true | Show button "Go To Today" | |
| defaultSelect | true | Highlight the current date even if the input is empty | |
| allowBlank | false | Allow field to be empty even with the option validateOnBlur in true | |
| timepickerScrollbar | true | ||
| onSelectDate | function(){} | | |
| onSelectTime | function(current_time,$input){} | ||
| onChangeMonth | function(current_time,$input){} | ||
| onChangeYear | function(current_time,$input){} | ||
| onChangeDateTime | function(current_time,$input){} | ||
| onShow | function(current_time,$input){} | ||
| onClose | function(current_time,$input){} | | |
| onGenerate | function(current_time,$input){} | trigger after construct calendar and timepicker | |
| withoutCopyright | true | ||
| inverseButton | false | ||
| scrollMonth | true | ||
| scrollTime | true | ||
| scrollInput | true | ||
| hours12 | false | ||
| yearStart | 1950 | Start value for fast Year selector | |
| yearEnd | 2050 | End value for fast Year selector | |
| roundTime | round | Round time in timepicker, possible values: round, ceil, floor | |
| dayOfWeekStart | 0 | Star week DatePicker. Default Sunday - 0. Monday - 1 ... | |
| className | |||
| weekends | [] | | |
| disabledDates | [] | Disbale all dates in list | |
| allowDates | [] | Allow all dates in list | |
| allowDateRe | [] | Use Regex to check dates | |
| disabledWeekDays | [] | Disable days listed by index | |
| id | |||
| style | |||
| ownerDocument | document | The ownerDocument object for the datetimepicker to properly attach events and calc position (iframe support). | |
| contentWindow | window | The contentWindow object that contains the datetimepicker to properly attach events (iframe support). |
Methods
show
Show Datetimepicker
$('#input').datetimepicker();
$('button.somebutton').on('click', function () {
$('#input').datetimepicker('show');
});hide
Hide Datetimepicker
$('#input').datetimepicker();
$(window).on('resize', function () {
$('#input').datetimepicker('hide');
});toggle
Sgow/Hide Datetimepicker
$('#input').datetimepicker();
$('button.trigger').on('click', function () {
$('#input').datetimepicker('toggle');
});destroy
Destroy datetimepicker
$('#input').datetimepicker();
$('#input').datetimepicker('destroy');
reset
Reset datetimepicker's value
$('#input').datetimepicker();
$('#input').val('12/01/2006');
$('#input')
.datetimepicker('show')
.datetimepicker('reset')
validate
Validate datetimepicker's value
$('#input').datetimepicker();
$('#input').datetimepicker(validate)
setOptions
Set datetimepicker's options
$('#input').datetimepicker({format: 'd.m.Y'});
$('#input').datetimepicker('setOptions', {format: 'd/m/Y'});
//or
$('#input').datetimepicker({format: 'd/m/Y'});
getValue
Get current datetimepicker's value (Date object)
$('#input').datetimepicker();
$('button.somebutton').on('click', function () {
var d = $('#input').datetimepicker('getValue');
console.log(d.getFullYear());
});PHPQRCODE生成二维码
$data = 'i am qrcode';
$level = 'Q';// 纠错级别:L、M、Q、H
$size = 2;//元素尺寸
$margin = 5;//边距
$outfile = $path; //生成图片的路径,false直接输出到屏幕
$saveandprint = false;// true直接输出屏幕,false保存到文件中
$back_color = 0xFFFFFF;//白色底色
$fore_color = 0x000000;//黑色二维码色 若传参数要hexdec处理,如 $fore_color = str_replace('#','0x',$fore_color); $fore_color = hexdec('0xCCCCCC');
$QRcode = new QRcode();
//保存到文件
$QRcode->png($data, $outfile, $level, $size, $margin, false, $back_color, $fore_color);
//保存到文件并输出到屏幕
$QRcode->png($data, $outfile, $level, $size, $margin, true, $back_color, $fore_color);
//只输出到屏幕
$QRcode->png($data, false, $level, $size, $margin, false, $back_color, $fore_color);
imagecopy、imagecopymerge的区别
转自:https://www.jianshu.com/p/8023e25d9427
imagecopymerge 可以把不符合大小尺寸的图片压缩或拉伸成合适的水印大小,并对整个水印图片加透明度,但水印图片内部的透明度会被填充为默认黑色,例如带圆角的图片。
imagecopy 可以对原图素材裁剪,但不做压缩或填充。合成后保留png本身的透明度,例如圆角logo。
imagesavealpha 保存图像时是否保留完整的 alpha 通道信息(imagecopy不需要)
$img = imagecreatefromstring(file_get_contents($path));
imagealphablending($img, true);
imagesavealpha($img, true);

