转:关于canvas在retina屏下绘制文字或图像模糊的解决方案 一.问题描述 最近在鼓捣canvas的时候,发现绘制在canvas上的文字(或图片)在retina屏幕上会出现显示模糊的问题,感觉很不爽,于是就Google了一番,还真发现了一个解决方案.有兴趣的同学可以去读一下原文,我在这里简单的记录一下. 先看一下Deom页面,对比一下前后两个效果,请务必在配有retina屏幕的设备上浏览(iOS6下的safari除外).否则是看不到效果的. 二.问题分析 熟悉retina屏的同学应该都知道…
devicePixelRatio 那些事儿 设备像素比 window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,即公式表示为:window.devicePixelRatio = 物理像素 / dips. 物理像素(physical pixel):设备能控制显示的最小单位设备独立像素(device-independent pixel):独立于设备的用于逻辑上衡量像素的单位每英寸像素量(pixels per inch):一英寸长度上可以并排的像素数量 正常人眼可以识别的…
本文所说devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持,随着显示器的发展,这个属性也慢慢登上了前端技术的舞台. 本文内容大部分属于翻译性质内容,因此,会不那么通俗易懂.不过,你是做手机开发的,或是有意向的,本文的内容如果细细读来,还是有些收获的. 一.定义 window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例.…
如果你是一个开始接触移动Web开发的前端工程师,那么你或许也遇到了和我曾经遇到的过问题:有太多新的概念需要掌握,太多相似的概念需要区分.没关系,我将用两篇文章的篇幅来解决这些问题.上篇文章关于解释和区分一些入门级别概念. 这些概念你或许一直在各种场合看到或者听说,好像熟的很,但你真的了解它们背后的含义吗?下篇文章我们就需要用到这些概念,聊一聊移动设备上的图片加载方案.至于响应式设计,已经有太多写的非常好的文章来叙述它们,这次在这里我就不赘述了. 我们先从听说最多一个概念——PPI开始. PPI…
devicePixelRatio window.devicePixelRatio是设备上物理像素和逻辑像素的比例.公式表示就是:window.devicePixelRatio = 物理像素 / 逻辑像素 解释 这张图中第一行的「像素」(Points) 就是所谓的「逻辑像素」. 在 iPhone 4 前的时代,逻辑像素和物理像素是一一对应的——即,设计中的一个点对应屏幕硬件上的一个像素点. iPhone 4 之后,Retina 屏幕出现.在 Retina 屏幕上,使用 4 个硬件上的像素点 (2…
常见手机的设备分辨率和viewport分辨率,及其1rem的大小(以vmin为单位) 常见的devicePixelRatio是1, 1.325, 1.5, 2, 2.4, 3.  (具体见下面的表格,从Chrome Emulator中导出的). Brand Device Resolution Pixel Ratio Amazon Kindle Fire 1024x600 1 Amazon Kindle Fire HD 7" 1280x800 1.5 Amazon Kindle Fire HD 8…
我们这里所说的devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持. 概念 devicePixelRatio ,它是设备上物理像素和设备独立像素( device-independent pixels (dips) )的比例,即 devicePixelRatio = 屏幕物理像素/设备独立像素 例如iPhone4S,分辨率为:960×640,取屏幕宽度计算,物理像素640px,设备独立像素320px,那么,devi…
一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的设置.例如下面盗来的图片,右图一个独立像素等于四个像素,左图一个独立像素等于一个像素.devicePixelRatio为表示这个比例的值,如果设备宽度为640物理像素,320独立像素,则devicePixelRatio为640/320=2,一个独立像素等于4个物理像素. 所以,如果切了一张10像素宽…
移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各种不同分辨率的移动设备. 一.viewport的概念 通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又…
Lumia 1520 IE11 mobile -> window.devicePixelRatio = 2.217964285714286 Lumia 1520 UAP 环境 -> window.devicePixelRatio = 2.200000047683716…
window属性:devicePixelRatio 设备像素比 https://www.w3cschool.cn/fetch_api/fetch_api-atvq2nma.html devicePixelRatio属性示例 一个 canvas 在视网膜屏幕上可能显得太模糊.使用  window.devicePixelRatio 以确定应该添加多少额外的像素密度以允许更清晰的图像. px:pixel 像素…
本文主要针对移动端1物理像素问题展开 解决这个问题先要了解一下概念: CSS像素(CSS Pixel):(通俗说:样式中写的值)就是我们在样式代码中常写的逻辑像素,是一个抽象概念,实际并不存在 设备独立像素(Device Independent Pixel):与设备无关的逻辑像素,代表可以通过程序控制使用的虚拟像素,是一个总体概念,包括了CSS像素 设备像素(Device Pixel):物理像素,设备能控制显示的最小单位,我们眼睛看到的屏幕上所呈现的像素大小就是这个,我们常说的1920×1080…
在去年的时候也实现过合成海报的功能,不过当时时间仓促,实现的比较简单. 就一个旋转功能,图片也不能拖动放大,也不能裁剪. 去年的实现可以参考<移动图片操作--上传>和<移动图片操作--预览旋转合成> 这次有时间就实现一个功能稍微多点的海报. 一.概要 第一屏 第二屏 第三屏 总共有三屏,第一屏是选择图片,第二屏是合成图片,第三屏是显示结果图,可保存分享朋友圈. 页面内容不是很多,分析起来也比较简单. 1)每一屏的左右边距相同,上边距各不相同. 2)屏幕内的元素,大部分是居中,有些特…
Retina屏的移动设备如何实现真正1px的线? 在retina屏下面,如果你写了这样的meta <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 你将永远无法写出1px宽度的东西,除此之外,inline的SVG等元素,也会按照逻辑像素来渲染,整个页面的清晰度会打折: 先看看  “诸子百家 ”  是如何实…
function  pxRa(cxt) { var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRa…
html5 canvas 绘制字体.图片与图形模糊问题 发生情况 多出现在高dpi设备,这意味着每平方英寸有更多的像素,如手机,平板电脑.当然很多高端台式电脑也有高分辨率高dpi的显示器. canvas在浏览器中的缩放原理 如果没有设置style那么就以html的属性width,height作为尺寸. 如果设置了style中的width.height,那么以其style设置为最终绘制到浏览器的尺寸. 也就是说,属性中的宽高并不代表实际宽高,所以高dpi下会放大canvas,导致模糊. canva…
最近在使用 canvas 画图的时候,遇到了图像文字模糊的问题,解决思路就是根据分辨率创建不同尺寸的画布.以下是创建高分辨率画布的代码: /** * 创建高分辨率画布 * @param w 画布宽 * @param h 画布高 * @param ratio 屏幕分辨率 */ function createHiDPICanvas(w, h, ratio?) { const PIXEL_RATIO = (function () { const c = <HTMLCanvasElement>docu…
事实上有很多种在前端展示PDF格式文档的方法,小编也用过好多种,例如有<iframe>.<embed>和<object>这些标签,但是在Vue项目里,这些方法都不能很好的展示PDF文档,实际上Vue给大家准备了展示PDF的插件,所以小编今天给大家讲解一下这个插件的用法. 首先下载插件 命令:npm install pdfjs-dist 下载完毕以后新建一个组件用来存放PDF文档 引入所需要的插件: 接下来就是Vue给大家已经准备好了展示PDF文档所需要的代码,不需要大家…
一.关于字数统计的问题 在使用textarea时常会对textarea中的文字数目进行统计,一般来说,可以使用onkeyup事件来解决问题. <textarea id="description" onkeyup="keypress()"></textarea> <span id="wordsCounting">500字</span> function keypress(){ var descript…
一.在本地浏览pdf(直接将element-dialog 和 iframe相结合)需要将要浏览的pdf放入static文件夹下面 <el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button> <el-dialog title="提示" :visible.sync="dialogVisible"> &l…
<template> <div id="div_read_area_scrool" class="no-scrollbar--x" :style="'text-align:center;height:'+ '500px;'+'overflow: auto;'"> <div id="div_read_area"></div> </div> </template&g…
最近在项目中用到了html2canvas插件,遇到的一些坑写下来,与大家共勉. html2canvas  官方网站http://html2canvas.hertzen.com/index.html 这是一个js截屏插件,在前台利用h5的canvas  将html的内容显示在canvas上,再利用 js 将canvas转化为图片 1.vue 文件中引入 html2canvas.js   <remote-script src="../html2canvas.js"></r…
以下我总结了一些注意事项,在代码中注释了,仅供参考. html2canvas.js点击付:完整使用的demo ,如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimu…
canvas Retina 屏幕优化 /** * HiDPI Canvas Polyfill (1.0.9) * * Author: Jonathan D. Johnson (http://jondavidjohn.com) * Homepage: https://github.com/jondavidjohn/hidpi-canvas-polyfill * Issue Tracker: https://github.com/jondavidjohn/hidpi-canvas-polyfill/…
//示范面向对象 this 作用域 闭包 单例模式很好的示范 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. (function () { 'use strict'; /** * T-Rex runner.…
这是项目中遇到的一个问题,起初觉得把一个html元素生成图片,提供给用户下载的需求挺容易实现的,毕竟看过一些截图的插件,但是在真正操作中遇到了各种各样的问题,比如移动端上截图显示不清晰,html元素中含有跨域的img图片导致污染canvas等等等..到现在我还没有真正解决这里的一些问题,先暂时记录一下使用的情况吧: 需求: 如下图,将一个包含有文字.图片的元素生成一张图片: 工具: html2canvas + canvas2Image 使用问题: 起初觉得使用html2canvas还是挺简单的,…
修改网上流传的flash-marker.js (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.FlashMarker = factory()…
1.自定义 生成二维码组件 QRCode.vue <!-- 生成二维码 组件 --> <template> <canvas class="qrcode-canvas" :class="{show: show}" :style="{height: size + 'px', width: size + 'px'}" :height="size" :width="size" ref=…
vue 中展示PDF内容 不久前有个需要改的需求,以前是直接根据链接让用户下载对应pdf文件来查看,最主要是给用户查看,然而这种并不是很安全的,其他用户可以进行下载或者使用pdf链接分享给其他人,所以后来需要验证后再进行展示pdf内容,只有对应知道的人自己验证后才能打开; 这里说下自己的实现吧,读取pdf,那么在纯静态的使用vue-cli搭建的网站中读取pdf文件是不行的,何况涉及到验证,那么只有调用接口来处理,但是读取pdf文件展示就需要组件,找了pdf.js 来使用,根据官方文档,pdf文件…