客户的小偷站不能用了,今天有空看了一下
原来是对方站由http变https了,好在我有相关的代码,于是我换了上去
发现访问竟然是一片空白,按理说不可能啊
于是我想到了可能是证书验证,要先去掉验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//为了不要证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//为了不要证书
然后给长点时间
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5000);//超时时间
然后终于有反应了,出来的是乱码,气得我牙痒痒
我查了一下相关资料,说是要看被抓页面的header
我发现了两个比较奇怪的~
一个是用了gzip压缩,另外一个是Transfer-Encoding:chunked
Gzip比较好解决,一句话搞定
curl_setopt($ch, CURLOPT_ENCODING, ‘gzip’);
但是chunked让我头疼,网上资料说是分块传输什么的,相当于把源代码分几块传输
有人说把http版本弄成1.0
curl_setopt($ch, CURLOPT_HTTP_VERSION, ‘1.0’);//为了回避Transfer-Encoding:chunked
但我当时测试的时候,没有修改$ch,一直没成功,只好找其他出路,(所有事情结束后才发现原来是$ch没改对)
然后我找了第二个办法,从别人资料里找了unchunk和unchunkHttp11函数
测试的时候unchunkHttp11老是丢失前面的一大段字符,不懂为啥
后面只好用了unchunk,幸好成功了
function unchunk($result) {
return preg_replace_callback(
'/(?:(?:\r\n|\n)|^)([0-9A-F]+)(?:\r\n|\n){1,2}(.*?)'.
'((?:\r\n|\n)(?:[0-9A-F]+(?:\r\n|\n))|$)/si',
create_function(
'$matches',
'return hexdec($matches[1]) == strlen($matches[2]) ? $matches[2] : $matches[0];'
),
$result
);
}
function unchunkHttp11($data) {
$fp = 0;
$outData = "";
while ($fp < strlen($data)) {
$rawnum = substr($data, $fp, strpos(substr($data, $fp), "\r\n") + 2);
$num = hexdec(trim($rawnum));
$fp += strlen($rawnum);
$chunk = substr($data, $fp, $num);
$outData .= $chunk;
$fp += strlen($chunk);
}
return $outData;
}
阅读全文
出现像问号一样的乱码符号
基本上是由于网站的编码不对造成的
将ucenter\data\config.inc.php下载下来
在最顶上添加
<?PHP header("content-Type: text/html; charset=gbk"); ?>
阅读全文
你们自己心里没有数吗?没有人骑你们的单车还怪客户私自占有???也不想一想为什么现在那么少人骑你们单车???
老子信用那么高,会占你单车吗???
老子再不用你hello的产品了,行不行???
阅读全文
主要的表现在:进入一个文件夹,新建文件,然后还是空白,要右键手动刷新一次才显示出来
上网去找过答案,说是注册表某个键值要修改
我把这个键值导出后就是这样的
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Update]
"UpdateMode"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Update\UpdateMode]
"DWORD"=hex(2):30,00,00,00
起效十来秒,很快又不行了
后来我想起前几天电脑很慢,我用优化大师对注册表进行了优化,我猜测是某些注册表里的信息被删除了
很块我注意到之前安装的一个软件Media Preview,就是给文件夹里的视频弄缩略图的,现在也不正常了
于是我打开了它的设置,Media Preview Configuration,在视频格式里先恢复系统设置,然后再全选格式,重新引用
神奇的一幕出现了,文件夹自动刷新功能回来了
阅读全文
方法一:这种方法会阻塞当前进程,直到运行的外部程序退出
System.Diagnostics.Process exep = System.Diagnostics.Process.Start(@“C:\Windows\Notepad.exe”);
exep.WaitForExit();//关键,等待外部程序退出后才能往下执行
MessageBox.Show(“Notepad.exe运行完毕”);
方法二:为外部进程添加一个事件监视器,当退出后,获取通知,这种方法时不会阻塞当前进程,你可以处理其它事情
System.Diagnostics.Process exep = new System.Diagnostics.Process();
exep.StartInfo.FileName = @“C:\Windows\Notepad.exe”;
exep.EnableRaisingEvents = true;
exep.Exited += new EventHandler(exep_Exited);
exep.Start();
//exep_Exited事件处理代码,这里外部程序退出后激活,可以执行你要的操作
void exep_Exited(object sender, EventArgs e)
{
MessageBox.Show(“Notepad.exe运行完毕”);
}
https://blog.csdn.net/qq_45835940/article/details/107087274
阅读全文
主要是从好看视频里看的一下Pr的编辑教程,感觉确实比较专业,也意味着操作麻烦,比如添加字幕好像很麻烦,我看到网上都是通过网易的一个什么平台去上传视频,然后让它自动生成字幕,现在好像是这个平台收费了,而且上传很浪费时间,然后他识别文字生成字幕也需要一段时间
然后我又下载了抖音官方的剪映专业版来用了一下,他比较简单,效果的功能比较少一些,好的地方也有,比如说声音可以变声,也有根据语音直接生成字幕,还有他提供了很多创意的小片段,但是它最大的问题还是导出,我用它来剪辑一个大概200兆的1080 P的视频,就只有剪短去掉一些片段这个操作,导出后竟然有1.6G,竟然比原来大那么多,降低一些帧率之类的之后还有600多兆,我直接无语了
阅读全文
DirectoryInfo TheFolder = new DirectoryInfo(path_video); //只获取一层,子文件夹没处理
foreach (FileInfo item in TheFolder.GetFiles("*.*"))
{
string name = item.Name;//处理目录下某一文件名
string fullname = item.FullName;//处理目录下带路径文件名
System.Diagnostics.Process Process1 = new System.Diagnostics.Process();
Process1.StartInfo.FileName = ffmpeg_address.Text;//调用外部程序名
Process1.StartInfo.Arguments= @"-i "+fullname+" -ss 2 -offset_x 10 -offset_y 20 -f image2 \""+path_img+"\\"+Path.GetFileNameWithoutExtension(name)+".jpg\" ";//调用程序参数
try
{
if (Process1.Start()) //开始进程
{
Process1.StandardOutput.ReadToEnd(); //读取输出流释放缓冲, 不加这一句,进程会一直无限等待
//MessageBox.Show(Process1.StandardOutput.ReadToEnd());
Process1.WaitForExit();
//MessageBox.Show("Process finished.");
}
}
catch (Exception ex)
{
Debug.Print("Exception !!!"+ex);//万一出错
}
}//end foreach
处理文件夹用下面的
DirectoryInfo TheFolder = new DirectoryInfo(path); //只获取一层,子文件夹没处理
foreach (DirectoryInfo item in TheFolder.GetDirectories()) {
string name = item.Name;//lv6下某一文件夹名
}
阅读全文
void Button1_select_ffmpegClick(object sender, EventArgs e)
{
//选择文件
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//该值确定是否可以选择多个文件
dialog.Title = "请选择文件夹";
dialog.Filter = "所有文件(*.*)|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
ffmpeg_address.Text = dialog.FileName;//把值保存到文本框
}
}
void Button1_select_dirClick(object sender, EventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择文件路径";
dialog.SelectedPath = "E:\\新建文件夹";//默认文件夹
//dialog.RootFolder = Environment.SpecialFolder.Programs;
if (dialog.ShowDialog() == DialogResult.OK)
{
textBox1_editdir.Text = dialog.SelectedPath;//把值保存到文本框
}
}
阅读全文
#region 从大图中截取一部分图片
/// <summary>
/// 从大图中截取一部分图片
/// </summary>
/// <param name="fromImagePath">来源图片地址</param>
/// <param name="offsetX">从偏移X坐标位置开始截取</param>
/// <param name="offsetY">从偏移Y坐标位置开始截取</param>
/// <param name="toImagePath">保存图片地址</param>
/// <param name="width">保存图片的宽度</param>
/// <param name="height">保存图片的高度</param>
/// <returns></returns>
public void CaptureImage(string fromImagePath, int offsetX,int offsetY, string toImagePath, int width, int height)
{
//原图片文件
Image fromImage = Image.FromFile(fromImagePath);
//创建新图位图
Bitmap bitmap = new Bitmap(width, height);
//创建作图区域
Graphics graphic = Graphics.FromImage(bitmap);
//截取原图相应区域写入作图区
graphic.DrawImage(fromImage, 0, 0, new Rectangle(offsetX, offsetY, width, height), GraphicsUnit.Pixel);
//从作图区生成新图
Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap());
//保存图片
saveImage.Save(toImagePath);//, ImageFormat.Png);
//释放资源
saveImage.Dispose();
graphic.Dispose();
bitmap.Dispose();
}
#endregion
阅读全文
static void ToGrey(Bitmap img1)
{
for (int i = 0; i < img1.Width; i++)
{
for (int j = 0; j < img1.Height; j++)
{
Color pixelColor = img1.GetPixel(i, j);
//计算灰度值
int grey = (int)(0.299 * pixelColor.R + 0.587 * pixelColor.G + 0.114 * pixelColor.B);
Color newColor = Color.FromArgb(grey, grey, grey);
img1.SetPixel(i, j, newColor);
}
}
}
static void Thresholding(Bitmap img1)
{
int[] histogram = new int[256];
int minGrayValue=255, maxGrayValue=0;
//求取直方图
for (int i = 0; i < img1.Width; i++)
{
for (int j = 0; j < img1.Height; j++)
{
Color pixelColor = img1.GetPixel(i, j);
histogram[pixelColor.R]++;
if (pixelColor.R > maxGrayValue) maxGrayValue = pixelColor.R;
if (pixelColor.R < minGrayValue) minGrayValue = pixelColor.R;
}
}
//迭代计算阀值
int threshold = -1;
int newThreshold = (minGrayValue + maxGrayValue) / 2;
for(int iterationTimes = 0; threshold != newThreshold && iterationTimes < 100; iterationTimes++)
{
threshold = newThreshold;
int lP1 =0;
int lP2 =0;
int lS1 = 0;
int lS2 = 0;
//求两个区域的灰度的平均值
for (int i = minGrayValue;i < threshold;i++)
{
lP1 += histogram[i] * i;
lS1 += histogram[i];
}
int mean1GrayValue = (lP1 / lS1);
for (int i = threshold+1;i < maxGrayValue;i++)
{
lP2 += histogram[i] * i;
lS2 += histogram[i];
}
int mean2GrayValue = (lP2 / lS2);
newThreshold = (mean1GrayValue + mean2GrayValue) / 2;
}
//计算二值化
for (int i = 0; i < img1.Width; i++)
{
for (int j = 0; j < img1.Height; j++)
{
Color pixelColor = img1.GetPixel(i, j);
if (pixelColor.R > threshold) img1.SetPixel(i, j, Color.FromArgb(255, 255, 255));
else img1.SetPixel(i, j, Color.FromArgb(0, 0, 0));
}
}
}
阅读全文
第 8 页,共 102 页« 最新«...678910...203040...»最旧 »