Peak Xin

小峰的博客


  • 首页

  • 标签

  • 分类

  • 归档

  • 优秀资源

  • 搜索

Windows Terminal Error creating winpty: ConnectNamedPipe failed: Windows error 232

发表于 2020-06-09 | 分类于 版本管理 |
字数统计: 35 | 阅读时长 ≈ 1

Simply exclude the following file in your antivirus software if you are using Git Bash (inside Windows Terminal) on Windows and are seeing above error message.

1
\Program Files\Git\usr\bin\winpty-agent.exe

js和canvas实现多张图片拼接成一张图片

发表于 2020-06-05 | 分类于 前端开发 , JavaScript |
字数统计: 1.2k | 阅读时长 ≈ 6

选择多张图片从上到下排列合成一张图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>拼长图</title>
</head>

<body>
<input id="uploadInput" type="file" accept="image/*" multiple="multiple" style="display: none;">
<label for="uploadInput" style="border: 1px solid #333; cursor: pointer; padding: 5px 20px;">
点击选择图片
</label>

<div id="imageBox"></div>

<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
// 拼出来的图片的宽度
const width = 300;
// 拼出来的图片的质量,0-1之间,越大质量越好
const encoderOptions = 0.5;
// 图片选择输入框
const uploadInput = document.getElementById('uploadInput');
// 图片展示框
const imageBox = document.getElementById('imageBox');

// 给图片选择输入框添加change监听事件
uploadInput.addEventListener('change', event => {
const files = Array.from(event.target.files); // 将图片文件对象转换为数组

filesToInstances(files, instances => {
drawImages(instances, finalImageUrl => {
imageBox.innerHTML = `<img src=${finalImageUrl}><a download href=${finalImageUrl}>点击下载</a>`;
});
});
});

/**
* 根据图片文件拿到图片实例
* @param files 图片文件对象数组
* @param callback
*/
const filesToInstances = (files, callback) => {
const length = files.length; // 文件个数
let instances = []; // 文件实例数组
let finished = 0; // 转换成功个数

// 遍历图片文件数组
files.forEach((file, index) => {
const reader = new FileReader();
// 把文件读为 dataUrl
reader.readAsDataURL(file);
reader.onload = e => {
const image = new Image();
image.src = e.target.result; // 获取图片文件的base64数据
// 解决跨域
// image.setAttribute('crossOrigin', 'anonymous');
// image.src = e.target.result + '?time=' + new Date().valueOf();
image.onload = () => {
// 图片实例化成功后存起来
instances[index] = image;
finished++;
if (finished === length) { // 如果全部完成转换,调用回调函数
callback(instances);
}
}
}
});
}

/**
* 拼图
* @param images 图片实例数组
* @param callback
*/
const drawImages = (images, callback) => {
const heights = images.map(item => width / item.width * item.height); // 计算获取每个图片文件根据指定width后的高度
const canvas = document.createElement('canvas'); // 创建canvas元素
canvas.width = width; // canvas宽度
canvas.height = heights.reduce((total, current) => total + current); // 计算heights数组元素相加后的总和为canvas的高度
const context = canvas.getContext('2d'); // 创建渲染
let y = 0; // canvas Y轴坐标

// 遍历图片实例数组
images.forEach((item, index) => {
const height = heights[index];
context.drawImage(item, 0, y, width, height);
y += height; // Y轴坐标加上上一张图片高度
});

// canvas数据放到回调函数
callback(canvas.toDataURL('image/jpeg', encoderOptions));
}
</script>
</body>

</html>
阅读全文 »

申请免费HTTPS证书方法

发表于 2020-06-05 | 分类于 运维实战 |
字数统计: 230 | 阅读时长 ≈ 1

阿里云

如果你仅需要一个单域名的证书,可以使用阿里云的免费证书,申请链接:https://common-buy.aliyun.com/?commodityCode=cas#/buy

  1. 选择域名类型:单域名
  2. 选择证书类型:DV SSL
  3. 选择加密等级:免费版
  4. 选择证书品牌:DigiCert
阅读全文 »

Using jQuery ajax and FormData to upload a file

发表于 2020-06-04 | 分类于 前端开发 , JavaScript |
字数统计: 512 | 阅读时长 ≈ 2

使用form表单初始化FormData对象方式上传文件

html

1
2
3
4
<form id="uploadForm" enctype="multipart/form-data">
<input type="file" name="file" />
<button id="upload" type="button">上传</button>
</form>
阅读全文 »

Laravel How to create a custom Log file

发表于 2020-06-01 | 分类于 PHP框架 , Laravel |
字数统计: 93 | 阅读时长 ≈ 1

On Laravel 5.8, you cannot use Log::useFiles() to create custom log files,after some digging around I found that I could add a channel to config/logging.php like this

1
2
3
4
5
'customlog' => [
'driver' => 'single',
'path' => storage_path('logs/custom.log'),
'level' => 'info',
],
阅读全文 »

Hexo Next主题 添加文章评论功能

发表于 2020-06-01 | 分类于 前端框架 , Hexo |
字数统计: 771 | 阅读时长 ≈ 3

Hexo的Next主题集成了多种评论系统,在这里介绍两种个人感觉还不错的评论系统:Valine和Gitment。

Valine 评论系统

使用 Valine 评论系统,这款系统不需要登录便可以登录,没有后端,Next 主题最新已经支持安装

  • 基于 Leancloud 的系统
  • 支持 MarkDown 语法
  • 无后端实现,快速高效
阅读全文 »

Laravel 输出执行的 SQL 日志

发表于 2020-05-29 | 分类于 PHP框架 , Laravel |
字数统计: 351 | 阅读时长 ≈ 1

我们在使用Laravel框架时,免不了要打印一下程序中SQL的执行情况

临时输出执行的 SQL 日志

1
2
3
4
5
DB::enableQueryLog();// 开启日志支持

// 程序中执行SQL的代码

dd(DB::getQueryLog());// 输出执行的 SQL 日志
阅读全文 »

解决Laravel表单提交默认将空值转为null

发表于 2020-05-28 | 分类于 PHP框架 , Laravel |
字数统计: 189 | 阅读时长 ≈ 1

在Laravel中,使用$request->inptu('field'),获取参数值为空的时候,输出的值为null

阅读全文 »

如何关闭PHP缓存

发表于 2020-05-28 | 分类于 后端开发 , PHP |
字数统计: 129 | 阅读时长 ≈ 1

最近使用 phpstudy_pro 集成环境,php 版本为 7.2.9,laravel 框架开发,发现一个问题,就是调试的时候,设置的打印数据得刷新好几次才能正常,开始以为是laravel 框架缓存导致的,清理laravel缓存之后,BUT,还是得刷新几次。

阅读全文 »

Hexo Next主题 配置

发表于 2020-05-25 | 分类于 前端框架 , Hexo |
字数统计: 916 | 阅读时长 ≈ 4

增加侧边阅读百分比进度条

打开位于 themes/next/_config.yml 文件,修改如下:

1
2
# Scroll percent label in b2t button.
scrollpercent: true
阅读全文 »
1…91011…21
Peak Xin

Peak Xin

Always keep a learning heart.

203 日志
42 分类
118 标签
RSS
GitHub E-Mail Twitter StackOverflow GitLab Travis Gitee SegmentFault CSDN
推荐网址
  • 阮一峰的个人网站
  • 廖雪峰的官方网站
  • 韩天峰(Rango)的博客
© 2026 Peak Xin 鲁ICP备15013472号-3
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4
本博客 由 Peak Xin 采用 知识共享 署名 4.0 国际 许可协议进行许可。
站点总访客数: 站点总访问量:
0%