- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大家好,就我而言,我有一个大的目标 Canvas 和一个小的屏幕外 Canvas 。
屏幕外的分辨率低于 100x100,而目标的分辨率为 5000x5000。当我调用drawImage将较小的 Canvas 复制到目标 Canvas 时,我得到了巨大的内存峰值,并且性能很糟糕。
我尝试将较小的 Canvas 转换为图像,这使得实际使用时的性能更快。唯一的问题是图像需要时间来加载,因此当调用 onload 时,我的 Canvas 上下文发生了变化。 --- exif 数据也可能被忽略,这可以解释图像的不同方向。
有没有办法从 Canvas 上下文中剥离属性,以便我可以保存并重置加载中的所有上下文属性?
我尝试执行 object.keys 但它总是返回一个空数组。我认为我剩下的唯一方法是直接在目的地上绘制,而不是在屏幕外绘制。它似乎更快,但我需要重做所有计算。
我还可以尝试其他替代方案吗?
谢谢!
下面的渲染函数每秒调用几次。
fabObject._render = function(ctx) {
var canvas = document.createElement('canvas');
canvas.width = 100;
canvas.height = 100;
var ctx2 = canvas.getContext('2d');
myDrawFn() //this function draws to the new canvas. Performance is the same with this function commented or uncommented
ctx.drawImage(ctx2, 0,0)// This line causes performance to be terrible. I tried converting ctx2 to an image first and passing it in but the onload places the image in the wrong orientation. I'm guessing its not using the exif data.
}
更新:我还尝试对每个像素执行 fillRect,这也快得多。然而,当我应用阴影属性时,它变得非常慢。我假设这是由于阴影具有高像素密度,但我不确定。
所以我做了进一步的测试,实际上是阴影模糊导致了当我使用像素绘制方法时速度变慢。没有模糊,阴影很快就会出现。
最佳答案
问题似乎是由于重复使用相同的屏幕外 Canvas 造成的。如果我每次都在新 Canvas 上调用drawImage,就像上面的例子一样。似乎没有内存泄漏或速度减慢。在drawImage中使用相同的离屏 Canvas 是否有任何原因会导致内存泄漏?
关于javascript - Canvas DrawImage 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539436/
我使用缓冲方法更新 Canvas ,问题是当我在缓冲 Canvas 中绘制图像并将其应用于真实 Canvas 时,真实 Canvas 上没有图像。但我可以将任何其他东西应用到真正的 Canvas 上。
好的,我正在使用 JavaScript Canvas 元素等创建一个游戏。我已经能够加载大量图像,但在选定的少数图像上,JavaScript 会回复错误,例如 Uncaught TypeError:
我的 Canvas 有一个简单的绘制图像,但它不会显示在第一帧上。 这让我发疯,我不知道为什么它不会这样做!! 这是我的脚本: img = new Image(); img.src = 'images
我正在尝试在我的代码上调用 DrawImage(),我正在遵循本教程 Jetpack Tutorial , 但我收到此错误: Unresolved reference: DrawImage 我尝试在
我目前正在尝试将图像打印到屏幕上,以便准备创建游戏。我可以单独显示图像,但前提是该图像是在 paintComponents() 类中实例化的。当然,我不想每帧都重新实例化整个板,但似乎无法让它工作。我
我正在尝试使用drawImage()方法获取要在屏幕上绘制的.jpg图像,但它不会绘制。这是代码: public void paint(Graphics g) { Image imag
在我的程序中,我有以下代码: package io.github.AdmiralSbs.DiceWars; import javax.imageio.ImageIO; import javax.swi
这基本上就是我的代码的工作方式 class Main extends JFrame implements Runnable { public Main() { //init ever
几天来,我一直在努力弄清楚为什么我的九层代码不能按预期工作。据我所知,Graphics.DrawImage 方法似乎存在问题,它无法正确处理我的九个切片图像。所以我的问题是如何补偿在紧凑型框架上运行我
当您将名为 logo.png 的图片放在与此 html 文件相同的目录中并尝试在 Web 浏览器中运行它时,该图片在 IE 中仅出现 10 次刷新中的 1 次,而在Firefox,但在进一步刷新后会出
当我使用 Graphics.DrawImage 绘制图像并以比原始图像更大的尺寸绘制时,它最终变得有点太小了。您可以在下图中看到这一点: 绿线不应该是可见的,也不是图像的一部分。相反,它们被绘制在图像
import java.awt.*; import javax.swing.*; public class Main { JFrame jf; Main() {
我正在尝试使用 Java 面板显示图像,但行不通。该代码没有给出任何异常和/或错误,但图像没有加载。该图像确实存在,我也尝试过 .jpg,但效果不佳。 package feupcraftproject
我需要在内存中保存约 50 个图像(这是必须的,也是我无法改变的条件)。但是,有时我想在 JFrame 上绘制这些图像的缩略图。 使用 graphics.drawImage(picture, 100,
最近我一直在构建一个在JFrame上绘制图像的应用程序,一切都很棒,但是当窗口离开屏幕时,绘制的图像就消失了,我一直想知道是否有办法避免那?谢谢 import javax.swing.*; 导入 ja
我有一个扩展 jlabel 并使用 paintComponent 在其上绘制的类,如下所示这是 paintPhotos.java package myApp; import java.awt.*; i
我正在玩 JavaFX,在 start(Stage theStage) 类中我有以下代码: /*... Scene, stage, canvas ...*/ GraphicsContext gc =
我正在尝试编写一些简单的游戏,但我一直在 Canvas 上绘制资源。我创建了一个 AssetsLoader“类”来加载图像并将其保存为图像对象。一开始我只想绘制一些加载的资源。但是drawImage函
我使用drawImage来“调整”图像的大小; img.onload = function(){ var width = img.width * 0.16,
我正在使用drawImage()。这是我的代码。 imDiv 包含一个内联 svg。 var c =document.getElementById( 'cvs' ); var ctx =c.g
我是一名优秀的程序员,十分优秀!