- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在获取掉落在该区域的文件列表。然后获取他们的 dataUrl 并将它们放入 Img 中。然后使用 drawImage
将该图像放入 Canvas 中。我根据图像的大小对图像进行适当的缩放。它运行正常。但问题是即使在操作完成后。例如在 Canvas 被附加到 dom CPU 之后很久,内存使用率就很高了。只是为了显示 Canvas ,它需要高 CPU 和内存。
放置事件中的代码:
e.preventDefault();
$("#controller_search").attr('value', '^')
$("#controller_search").attr('disabled', 'disabled');
$("#imageList").html('');
var templateData = "\
<div class='imageviewer-up'> \
<div class='curtain'></div> \
<canvas class='canvas'></canvas> \
<div class='loading'>0%</div> \
</div> \
";
for(var i=0;i<event.dataTransfer.files.length;++i){
var file = event.dataTransfer.files[i];
var reader = new FileReader();
reader.onload = (function(file){
return function(e){
var template = $(templateData);
var image = new Image();/*template.find('img')[0];*/
image.onload = (function(image){
return function(){
var size = {height: image.height, width: image.width}
var rSize = size;
if(size.height > 175)
rSize = {height: 175, width: (175*size.width)/size.height}
else{
rSize = {height: 175/(size.width/size.height), width: size.width/(size.width/size.height)}
}
image.height = rSize.height;
image.width = rSize.width;
var canvas = template.find('canvas')[0];
var context = canvas.getContext("2d");
context.mozImageSmoothingEnabled = true;
canvas.height = 175+4;
canvas.width = image.width+4;
context.drawImage(image, (canvas.height-image.height)/2, 2, image.width, image.height);
template.css('height', 175+4+0);
template.css('width', image.width+0);
}
})(image)
image.src = e.target.result;
image.title = file.name;
console.log(file.name);
$("#imageList").append(template);
image = null;
}
})(file);
reader.readAsDataURL(file);
}
目前,我正在通过拖动 20 张图像(总计最大 45 MB)进行测试,以便创建 20 张 Canvas 。是不是太多了?
编辑
我什至使用 IMG 而不是 Canvas 进行了测试。例如仅将 IMG 与 dataUrls 一起使用。但这种方式也是。以同样的方式减速。那么我的代码中是否存在内存泄漏?
最佳答案
我认为这是关于 chrome 的问题 bug#36412
data:
url 正在占用内存但未释放内存。这就是导致潜在问题的原因。我使用 window.URL.createObjectURL
修复了它和 window.URL.revokeObjectURL
.对于 webkit,它的 window.webkitURL
代替。现在即使有 30 多张图片也能正常工作。当前代码如下:
for(var i=0;i<event.dataTransfer.files.length;++i){
var file = event.dataTransfer.files[i];
var total = event.dataTransfer.files.length;
var template = $(templateData);
var image = new Image();/*template.find('img')[0];*/
image.onload = (function(image, template, i){
return function(e){
/* Size adjustment */
var canvas = template.find('canvas')[0];
var context = canvas.getContext("2d");
context.drawImage(image, (canvas.height-image.height)/2, 2, image.width, image.height);
window.URL.revokeObjectURL(this.src);
}
})(image, template, i)
image.src = window.URL.createObjectURL(file);
bong.upload.files.push(file);
$("#imageList").append(template);
image = null;
}
关于javascript - Canvas 甚至 Img 吃 RAM 和 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204049/
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
当我的应用中的 NSTextField 获得焦点时,我在接收来自 NSFontPanel 的任何消息时遇到了奇怪的问题。 即使是 NSTextField 的子类也没有从字体面板接收到任何内容。似乎面板
我正在使用简单的 for 循环在一行中移动 pacman,但 pacman 闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更平滑? 编辑: 我目前正在使用 C++ Turbo 及其内置图形库。但是我
我有一个简单的 TreeCellRenderer,它从节点中提取 JButton,并将其输出到 JTree。 public class ButtonCellRenderer extends JButt
我在编译时遇到了这两个错误,但我不明白我做错了什么。 main.cpp|107|error: 'sqrt' was not declared in this scope| main.cpp|107|e
我目前正在建立一个程序,在吃豆子迷宫中吃掉所有食物。但是,每次Pacman进行新动作时,我的程序都会被调用,因此程序结束时不会保存任何内存,并且只会返回一个动作:L,R,U或Down。我是AI新手,也
我需要在矩阵表示的图中找到成本较低的路径。我对 Dijkstra 算法进行了一些研究,但我需要一个 vector ,其中包含最短路径中的节点序列,而不是距离本身。该游戏是为 Assembly 制作的,
我试图在用 Python 处理后将一些 XML 数据导入我的 MySQL 数据库。为了简单起见,我通过一个使用 SQLAlchemy 访问我的数据库的脚本来完成这一切。 XML 文件有大约 80,00
我有 2 个用于 pacman 游戏开始的类(class),我对按键监听器或按键绑定(bind)的工作方式感到非常困惑。我有向上、向下、向右、向左移动的方法。我花了几个小时试图找出答案,但它不会调用常
参见Having Some Issues With Making Pacman才能充分理解这个问题。只需查看已接受答案的第一部分即可。这是用java编写的! 我正在使用上面链接中所示的数组。我的 pa
我正在用 Java 创建 pacman 游戏,但有 1 个无法解决的问题。问题如下: 游戏屏幕上有 4 个按钮,分别用于:上、下、左、右。问题是我无法在 x 位置和 y 位置同时使用按钮,因为我总是得
我正在使用 Jquery 制作吃 bean 人游戏。吃 bean 人的移动由箭头键引导,这会触发一个 setInterval() ,使他重复移动他宽度的距离,给人一种他在完全直线移动的错觉。按一个新键
我目前正在用 Java 制作吃 bean 人游戏。不过我有一个关于鬼魂的问题。 我知道鬼魂的攻击方式并不完全相同。我首先想研究让鬼魂去追吃 bean 的基础知识,而不用担心其中的差异。 我想问你们这些
我是 swift 的新手,我正在尝试编写吃 bean 人程序。我正在尝试将 pacman move 到滑动的方向,到目前为止我已经设法将它 move 到屏幕的边缘,问题是当我尝试将它 move 时不是
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 9 年前。 Improve
我正在尝试使用 ElementTree 读取 XML并将结果写回磁盘。我的长期目标是以这种方式美化 XML。然而,在我天真的方法中,ElementTree 吃掉了文档中的所有命名空间声明,我不明白为什
我在《吃 bean 人》中找到了很多关于鬼魂 AI 的引用资料,但没有提到在鬼魂被吃 bean 人吃掉后,眼睛是如何回到中央鬼洞的。 在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都
首先,这是吃 bean 人而非幽灵的 AI。 我正在编写一个 Android 动态壁纸,它围绕您的图标播放 PacMan。虽然它通过屏幕触摸支持用户建议,但游戏的大部分内容将由 AI 来玩。我已完成游
我正在制作吃 bean 人,但在框架上绘制图形时遇到问题,当我绘制点图像时,它看起来像蛇游戏,我尝试将我的背景和字符绘制方法都放在渲染中方法,但比我的点图像闪烁 它现在的样子,随意忽略那张随机的脸,这
我正在尝试用 C++ 创建一个基本的 Pacman 游戏(我将在这个问题中使用 Java 语法,因为这更容易演示),但我找不到好的设计选项。 到目前为止,我有 4 个类: - 怪物:可以针对怪物特定的
我是一名优秀的程序员,十分优秀!