libvips

个人博客搭建

烈酒焚心 提交于 2020-12-13 12:48:55
个人博客搭建 经过 1 个月的咕咕咕,总算把博客初步搭建好了,按照惯例先丢个链接大家有兴趣可以来逛逛: blog.mytyiluo.cn 。 主要特点如下: Modernized - 基于 Gatsbyjs,React,Typescript 构建; Opinionated - 以约束优先,减少博客中的必需参数; Git-based - 基于 GitHub 以及 Netlify 的自动化构建/部署; 为什么不使用现有的博客框架? 之前其实一直用的是 GitBook,但说实话,GitBook 还是更加适合书籍/教程等的写作,对随笔来说还是感觉少了点功能。而且官方也表示之后不再维护命令行程序了,因此决定慢慢的从这平台迁移出来。 在这过程中,有考虑过使用 Hexo 作为博客引擎,想自己写一套主题,但无奈不习惯它的模板语法,最终还是选择了放弃。 然后,考虑到开发的难度和灵活性,决定使用基于 React 的静态网页引擎,也就是 GatsbyJS 。 其中,最吸引我的便是它对多数据源的内建支持,并以 GrapQL 的形式统一提供数据,非常符合我对后期拓展的预期。此外,丰富的社区插件倒算是额外的惊喜,特别是支持 TypeScript 和 Less 对开发带来了极大的方便,支持响应式图片和 PWA 也省去了我大量的精力。 我希望的博客体验 在本地用 VS Code 来编写 Markdown

PHP处理高分辨率图片的问题

匆匆过客 提交于 2020-08-12 04:59:24
今天小伙伴在群里问了这么一个问题: 出现这种情况就是因为内存不足, PHP 程序直接退出了,报错大概如下: 上图的意思就是说,我们能使用的内存最大是8M,但是处理这个图片还需要额外的41bytes,就会导致内存不足,这是一个很严重的错误。在对图片进行操作前需要将图片的所有信息读入内存中,同时还会使用另一部分内存同于处理计算并缓存输出,所以内存大小的使用还是和图片的大小有关。 PHP 中图片的处理都是使用了 GD 库,这个库提供了很多方法让 PHP 可以更方便地对图片进行操作,支持的图片格式如下: 回到一开始的问题,那个小伙伴需要处理高分辨的图片,图片大小必然很大,所以就会出现内存不够的情况,解决方法还是有很多的。 1. 设置图片最大可上传的大小 前端上传前可以先检测下大小,如果超过最大值直接就不请求接口,同时为安全起见,后端接收到请求后也要检测大小,防止程序异常退出。 2. 压缩图片 3. 关闭 memory_limit 群里的小伙伴最后使用了一种 简单粗暴的方式 解决了该问题,直接在PHP中关闭 memory_limit : set_time_limit(0); @ini_set('memory_limit','-1'); 这样虽然解决了问题,但不优雅也不安全,同样在 php.ini 配置文件中将 memory_limit 的值设置很大也能解决: memory_limit =

Node.js服务端图片处理利器sharp.js安装过程中遇到的问题总结

喜你入骨 提交于 2020-04-06 17:04:00
由于Sharp基于C++的libvips库来实现,本地Mac开发完后在部署时安装sharp模块时会基于测试环境Liunx平台编译安装,测试环境安装时发现请求github下载libvips-8.9.1-linux-x64.tar.gz,所以只能失败告终。后来看源码和文档发现sharp项目考虑周到优先使用缓存和使用 sharp_dist_base_url参数,这样可以先将libvips-8.9.1-linux-x64.tar.gz下载到内网。 npm缓存路径使用npm config get cache 查询。新建_libvips,把libvips-8.9.0-linux-x64.tar.gz放进去。 Using cached /root/.npm/_libvips/libvips-8.9.0-linux-x64.tar.gz,这样安装时就不会再请求了。 npm config set sharp_dist_base_url "https://hostname/path/" 或者 SHARP_DIST_BASE_URL=http://172.20.x.x npm i --unsafe-perm --allow-root 表面上看使用以上方法解决请求不到依赖包的问题事情就搞定了,但远没这么简单。 由于需要Liunx环境来安装编译sharp,自然想到用虚拟机或Docker