找到/src/EvaThumber/Thumber.php文件,第509
加入以下代码:
// 防止尺寸过大,图片并没有裁切的尺寸大造成失败
if($crop > $imageWidth || $gravity > $imageHeight){
$min1 = min($crop,$gravity);
$min2 = min($imageWidth, $imageHeight);
if($min1 <= $min2){
$crop = $gravity = $min1;
}else{
$crop = $gravity = $min2;
}
}
然后就好了,
如果给与的截取宽高大于图片的宽高,就取给与的最小值进行判断,
如果最小值小于图片宽高,就用这个最小值作为基准进行截取图片。
如果最小值大于图片宽高,就用图片的宽高最小值最为基准,进行裁切图片。
]]>EvaThumber的路径方式为:
/thumb/d/image/20181225/1545744945770238,c_200,g_200.jpg
期待的路径为:
/thumb/d/image/20181225/1545744945770238.jpg?200x200
修改办法:
Apache Rewrite:
#/yueyue/20170425/20170425103814_609844_10002_23252.png?200x200_130
#/thumb/d/image/20181225/1545744945770238,c_200,g_200.jpg
RewriteCond %{QUERY_STRING} (\d+)x(\d+)_\d+
RewriteRule ^(thumb\/d\/[^\.]+)(\.\w+) index.php/$1,c_%1,g_%2$2
判断QUERY_STRING最好还是用RewriteCond,然后在RewriteRule里面用%1或%N来表示找到的正则参数。
最后记得在EvaThumber的index.php里面写入这个哦
// 源码是通过PATH_INFO获取的数据的,所以要修改它
$_SERVER['REQUEST_URI'] = '/index.php' . $_SERVER['PATH_INFO'];
当然了,在此之前你要测试URL的话:
RewriteRule (thumb\/d\/[^\.]+)(\.\w+)\?(\d+)x(\d+)_\d+ index.php?ddd=$1,c_$3,g_$4$2 [QSA]
然后建立个index.php
<?php
var_dump($_GET);
]]>a2enmod rewrite
开启rewrite模块,然后编辑文件
/etc/apache2/apache2.conf
找到
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None #这里改成All即可
Require all granted
</Directory>
然后
service apache2 restart
]]>s='abcdefg';
s.substr(0,3)
// "abc"
s.substr(2,3)
// "cde"
substring第2参数是实际字符串的第几位,但是!
substring也是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
如:
s.substring(2,3)
// "c"
s.substring(2,5)
// "cde"
// 注意:有坑
s.substring(5,2)
// "cde"
slice和substring很像,但是区别在于负数
slice的负数从尾部开始算,我们正常人类逻辑,但
substring的负数干脆直接转为0!!
如:
s.slice(0,3)
// "abc"
s.slice(2,3)
// "c"
s.slice(2,-2) // 从开始2,到结尾2
// "cde"
s.substring(2,-2) // 负数直接干成0,然后从0作为最小,2作为最大
// "ab"
s.slice(-2,2)
// ""
s.substring(-2,2) // 负数直接干成0,然后从0作为最小,2作为最大
// "ab"
s.substr(-2,3) // substr的第二参数是从第一开始数,所以根本不能为负数!
// "fg"
substr和slice区别
substr在于第二参数,也就是结束地址,substr结束地址是从第一参数后面开始数第几个!
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!
substr和substring的区别
substr第二参数的结束位置从第一参数开始数第几个,但是不能为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!
slice和substring区别
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!第二参数可为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!不可为负数!
substring 参数负数变0,且哪个小,就用哪个做起点,哪个大,就用做终点!
substr 第二参数不能为负数,因为从第一参后开始数
slice 第二参数可以是负数,他的第二参数是绝对地址
注意 取消勾选 Uses Data Source
注意选择Content Views
self.comboBoxData就是你的AppDelegate中定义的一个属性咯。
// 下拉框数据
@property (nonatomic,strong) NSArray* ComboBoxCellData;
// 初始化下拉框数据
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime"];
注意使用Interface-Builder将元素拖拽到代码里做个Outlet
例如:
[self.comboBoxCell addItemsWithObjectValues:@[@"text",@"textarea",@"password",@"datetime",@"hidden"]];
开启元素的Uses Data Source哦别忘了!
这里说一下,XCode可以两种方式实现dataSource
代码设置dataSource
// 设置下拉框数据源
[self.comboBoxCell setDataSource:self];
设置好dataSource,然后在代码里实现NSComboBoxDataSource协议,例如:
@interface AppDelegate () <NSComboBoxCellDataSource>
设置数据
@property (nonatomic,strong) NSArray* comboBoxCellData;
// ...
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime",@"hidden"];
并实现以下接口,两个啊
#pragma mark -
#pragma mark ***** 表格下拉框的数据源 *****
// 填充下拉框数据大小
-(NSInteger)numberOfItemsInComboBoxCell:(NSComboBoxCell *)comboBoxCell{
return [self.comboBoxCellData count];
}
// 获取下拉框数据
-(id)comboBoxCell:(NSComboBoxCell *)comboBoxCell objectValueForItemAtIndex:(NSInteger)index{
return [self.comboBoxCellData objectAtIndex:index];
}
然后就OK了
如你所见我成功的设置了,很逼性是吧!当然了这个工具自己用啊
废话不多说~当然了,愿意用哪种都行,哈哈操
]]>当复制出来的Charles CURL数据不能成功导入PostMan,如下所示
这时候查看复制出来的数据:
curl -H 'Host: xxx.com' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --compressed 'http://xxx.com'
问题出现在结尾网址,请将结尾网址提到最前面就可以了。
curl 'http://xxx.com' -H 'Host: xxx.com' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --compressed
这样就OK了
]]>但是直接执行该代码在SHELL却是成功的!
问题出现在哪里?检查了发现是代码参数里面的字段被编码了,怎么解决呢?
直接打开Chrome,然后用decodeURIComponent(代码)
即可,例如
decodeURIComponent(`curl 'http://api.gifshow.com/rest/n/feed/hot?appver=5.11.1.750&did_gt=1536039663222&did=C7C4E156-7E68-42E7-A223-EF1DDA20892F&extId=b4e947c925be9624884ccd4c290233f2&c=a&ud=406159254&ver=5.11&sys=ios12.1&mod=iPhone10%2C3&net=%E4%B8%AD%E5%9B%BD%E8%81%94%E9%80%9A_5' -H 'Host: api.gifshow.com' -H 'X-REQUESTID: 1306738266' -H 'Accept: application/json' -H 'User-Agent: kwai-ios' -H 'Accept-Language: zh-Hans-CN;q=1' --data "__NStokensig=226dd3f2ac68ff24be93809824852a4afce71a2605b1277d3f6c0aa0798b1754&client_key=56c3713c&count=20&country_code=cn&id=17&language=zh-Hans-CN%3Bq%3D1&needInterestTag=0&pcursor=1&pv=false&refreshTimes=2&sig=f5a492715f5a00d625e97abe73e078de&source=1&token=322bfccaec274d769bb69be4a75a16e1-406159254&type=7" --compressed`)
拿到结果就直接重新导入到PostMan就OK了!
]]>