HTML5画布的大小和分辨率有什么关系

2023-11-29

有没有一种方法可以创建大尺寸但低分辨率的画布。我用语法声明画布<canvas id="mycanvas" width="700" height="1000"></canvas>。我在 7 英寸平板电脑上运行上述代码,画布占据了画布屏幕的一半。有没有一种方法可以创建一个画布,它再次覆盖屏幕的一半,但分辨率较低(图像质量较低)。 实际上我在画布上画了一些东西,然后使用canvas.toDataURL()将其保存为图像。我不需要获得高质量的图像,但我想减小生成的图像的大小。

如果这是一个愚蠢的问题,请原谅我


首先,像这样缩放画布元素(在 JavaScript 中):

    canvas.width=canvas1.width*scaleFactor;
    canvas.height=canvas1.height*scaleFactor;

警告:如果使用 CSS 缩放画布,则可能会扭曲画布上绘制的图像

然后您可以使用一些添加的参数来缩放图像context.drawImage

    var scaleFactor=0.50;

    ctx2.drawImage(img, 0,0,img.width,img.height,
                            0,0,img.width*scaleFactor,img.height*scaleFactor);

enter image description here

这是代码和小提琴:http://jsfiddle.net/m1erickson/6m8kg/

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<style>
    body{ background-color: ivory; padding:15px;}
    canvas{border:1px solid red;}
</style>

<script>
$(function(){

    var canvas1=document.getElementById("canvas1");
    var ctx1=canvas1.getContext("2d");
    var canvas2=document.getElementById("canvas2");
    var ctx2=canvas2.getContext("2d");

    var scaleFactor=0.50;

    var img=document.createElement("img");
    img.onload=function(){

        // draw the image full-size on the larger canvas
        ctx1.drawImage(img,0,0);

        // resize the canvas 
        // Don't use css to resize, it will distort your image
        // The scaling is done with the added drawImage arguements
        canvas2.width=canvas1.width*scaleFactor;
        canvas2.height=canvas1.height*scaleFactor;

        // draw a scaled-down image into the second canvas
        ctx2.drawImage(img, 0,0,img.width,img.height,
                            0,0,img.width*scaleFactor,img.height*scaleFactor);

    }
    img.src="faces.png";


}); // end $(function(){});
</script>

</head>

<body>
    <p>Top canvas is full-sized</p>
    <canvas id="canvas1" width=400 height=242></canvas><br>
    <p>Bottom canvas is scaled down</p>
    <canvas id="canvas2" width=300 height=300></canvas>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5画布的大小和分辨率有什么关系 的相关文章

  • 如何在没有 JavaScript 的情况下预加载图像?

    在我的 HTML 页面之一上 当我将鼠标悬停在某些链接上时 会显示一些大图像 并且加载这些图像需要一些时间 我不想使用 JavaScript 来预加载图像 有什么好的解决办法吗 HTML5 有一种新方法可以做到这一点 即link prefe
  • 如何使用 JavaScript 获取元素的填充值?

    我有一个textarea在我的 HTML 中 我需要获取整数或浮点形式的填充数值 以像素为单位 我如何使用 JavaScript 获取它 我没有使用 jQuery 所以我正在寻找纯 JavaScript 解决方案 这将返回padding l
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • CSS设置默认滚动位置

    有没有办法将滚动位置设置为默认值 我知道如何在 javascript 中做到这一点 例如使用 jquery div divWithScroll attr scrollTop 200 但我只想用CSS来做 我不知道是否可行 不 CSS 中没有
  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • 如何使用 a-href 标签链接回文件夹? [复制]

    这个问题在这里已经有答案了 好吧 我在文件夹中有一个页面 该页面称为 jobs html 该文件夹简称为 jobs 它是我的 网站 文件夹的子文件夹 在 main 文件夹的主目录中是我的 home html 文件 当我尝试做的时候 a hr
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • 如何延迟加载嵌入在 iframe 上的 YouTube 视频?

    如何将延迟加载应用于iframe嵌入视频 我尝试添加loading eager loading auto and loading lazyload 您可以使用srcdoc你里面的属性iframe标签来加载图像 请参阅以下示例作为参考
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4

随机推荐

  • GNU GCC 编译器错误“main 的多重定义”

    我是 ubuntu 新手 现在我需要用 C 开发我的作业 我正在使用 codeblocks IDE 编写 C 程序 每当我在其中编译某些内容时 都会出现以下错误 multiple definition of main warning con
  • 在循环中使用innerHTML无法正确显示json结果集

    我使用 HTML onclick 事件来调用一个函数 该函数将读取包含 JSON 语法的 Javascript 字符串并输出结果 但仅显示最后一个结果 var resorts skiResorts resortName Afton Alps
  • firebase 逆序排序

    var playersRef firebase database ref team mapping playersRef orderByChild score limitToFirst 7 on child added function d
  • 使用 OU 的部分路径在 Active Directory 中搜索 OU

    AD 查询语法中是否有一种方法可以通过搜索 OU 的部分路径来查找 OU 的完整路径 例如 我的 OU 的完整路径是 OU Clerks OU OfficeA OU Administration DC domain DC local 现在
  • gif 动画在 Chrome 和 Firefox 中仅循环一次

    我有一个 gif 动画 我想在页面加载时随时显示它 当我在浏览器外部查看图像时 图像无限循环并且工作得很好 但每当我在浏览器中显示图像时 动画仅循环一次 有人对让图像无限循环有什么建议吗 目前 我这样做只是为了使图像出现 这确实使它出现 但
  • 在 R 中读取两行标题

    当标题有两行必要的标题时 将文件读入 R 的最佳方法是什么 这种情况经常发生在我身上 因为人们经常使用一行作为列名称 然后在其下面包含另一行作为测量单位 我不想跳过任何事情 我希望将名称和单位保留下来 这是什么具有两个标头的典型文件可能如下
  • 无法使用 gethostbyname() 获取本地 IP

    一位朋友用过以下代码片段检索 LAN 中主机的本地 IP 地址 int buffersize 512 char name buffersize if gethostname name buffersize 1 Exception excep
  • 为什么 deref 强制转换不适用于 `From::from`?

    来自section在书里 Deref 强制转换将引用转换为实现Deref特征转换为对另一种类型的引用 它会自动发生 当我们传递对特定类型值的引用作为参数时 与参数类型不匹配的函数或方法 函数或方法定义 我正在尝试找出两者之间的区别bar a
  • Z3 优化超时

    如何为 z3 优化器设置超时 以便在超时时为您提供最知名的解决方案 from z3 import s Optimize Hard Problem print s check print s model 后续问题 你可以将z3设置为随机爬山还
  • NHibernate 删除 DAL?

    使用 NHibernate 或任何其他 ORM 消除了 DAL 的必要性 我说得对吗 或不 我试图思考如何回答这个问题 但答案是否定的 它不会消除 DAL 的必要性 而不是成为该 DAL 的一部分 毫无疑问 您之前所做的就是访问调用 sql
  • Spring @Bean 与 @Lookup 方法

    我已经利用 Lookup 注释实现了一个 Spring bean 该线程很有帮助 如何使用spring Lookup注解 随后我注意到一种奇怪的行为 我不确定是有意为之还是我自己的误解 Spring 将在使用 Service Compone
  • Android 中的图像内存管理

    这是初学者最常问的问题之一 但不幸的是我仍然无法得到任何帮助 在一个活动中 我有一个 viewflipper 我以编程方式将图像视图分配给它 使用 for 循环将大约 100 个图像添加到 viewflipper 可能是由于图像大小或由于图
  • 基于 redshift 中的自表查找更新表

    我有下表 id email mgr email mgr id 1 email1 email2 2 email2 email3 3 email3 email4 我想通过将 mgr email 与电子邮件匹配来填充 id 列中的 mgr id
  • Android OutOfMemoryError 大图像

    对于尺寸较大的图像 不是按分辨率 该方法会抛出 OutOfMemoryError 我有 12 MP 照片 所有照片的大小都不同 1 5MB 2 5MB 3 2MB 4 1MB 等 所有照片的分辨率都是相同的 4000 x 3000 像素 r
  • 当传递给另一个对象时,谁应该对 IDisposable 对象调用 Dispose?

    是否有关于谁应该致电的指导或最佳实践Dispose 当一次性对象被传递到另一个对象的方法或构造函数时 这里有几个例子来说明我的意思 IDisposable 对象被传递到一个方法中 完成后是否应该释放它 public void DoStuff
  • 使用 AWK 打印 XML 元素

    如何使用 AWK 打印 XML 元素的内容 从开始标记到结束标记 例如 考虑以下 XML
  • 追溯性地向方法添加Java注释?

    有没有办法修改 class 文件以便向某些方法添加 Java 注释 基本上我想遍历 jar 文件中每个类文件的方法并注释某些方法 请注意 这不是在使用 jar 文件时的运行时 相反 完成后我想用注释修改类文件 我确实可以访问源代码 所以如果
  • 测试 JButton 时,我的 lambda 表达式有效,但 actionPerformed 无效

    我正在按照以下步骤第一次学习如何使用 Java Swingtutorial在YouTube上 我已经到达涵盖按钮的部分 并且一直按照代码进行操作 但是 在尝试测试按钮时 当我使用actionPerformed方法 我的按钮不会打印出这个词
  • Ruby on Rails:将 javascript 数据发送到 ruby​​ 控制器

    我想发送一个 javascript 数组以由我的控制器中的方法处理 我认为我这样做是错误的 我是一个彻底的 RoR jquery 和 ajax 菜鸟 这是我所拥有的 请给我一些指导 div class dataTable style wid
  • HTML5画布的大小和分辨率有什么关系

    有没有一种方法可以创建大尺寸但低分辨率的画布 我用语法声明画布