在 p5.js 中放大时精灵模糊

2024-04-26

我试图将 p5.js 中精灵的大小放大一点(系数 2),但渲染时它们看起来很模糊。显然,放大通常不是一个好主意,但是我已经成功地使像素化精灵在原始 JavaScript 中看起来清晰(基于这篇文章:https://nluqo.github.io/broughlike-tutorial/stage1.html https://nluqo.github.io/broughlike-tutorial/stage1.html).

在 JS 中我会做这样的事情:

let canvas = document.querySelector("canvas");
let ctx = canvas.getContext("2d");
ctx.imageSmoothingEnabled = false;

并像这样画:

let tileSize = 32;
ctx.drawImage(
  spritesheet,
  sprite*16,
  0,
  16,
  16,
  x*tileSize,
  y*tileSize,
  tileSize,
  tileSize
);

当向上缩放精灵时,我得到了一个很好的干净效果(类似于我上面链接的文章中显示的方式)。

现在,我正在尝试将一些代码移植到 P5.js 以用于演示目的,并一直在尝试复制上述升级(spritesheet 为 16x16,希望渲染为 32x32)并且已经trying复制典型的ctx电话,但它们的工作方式似乎不一样。另外值得注意的是,我试图从createCanvas并获取 2D 上下文,但该方法不存在。

这是我到目前为止所尝试过的:

createCanvas(1024, 800);
noSmooth();
...
const spriteSize = 16;
const spriteScaled = 32;

let _c = 0; // col lookup into spritesheet
let _r = 0; // row lookup into spritesheet
test_image = createImage(spriteScaled, spriteScaled);
test_image.copy(
  tileMap,
  _c * spriteSize,
  _r * spriteSize,
  spriteSize,
  spriteSize,
  0,
  0,
  spriteScaled,
  spriteScaled
);
// also tried this:
// test_image.resize(spriteScaled, 0);

另外,我将其添加到我的style.css没有效果:

canvas {
  display: block;
  image-rendering: -moz-crisp-edges;
  image-rendering: -webkit-crisp-edges;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}

虽然noSmooth() https://p5js.org/reference/#/p5/noSmooth函数确实会影响用image()功能,它不影响的行为copy()功能。

let imgUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAAh0lEQVQ4y92TMQ6AIAxFX40bB3HyIE4ex00jm+dj8iDOdRGDWhMim39seeWT8gVbatSEjKIC6DY+DzpvMnUKR3AN/mnp6Inzmg6RFLbAu5p2jG4EoIqNHNhSBegy5QNr8PE5enHwVT8YcK5xmaDv+L7GUgek63xzcr/9NQvWvxhmOz9SmsZi7UmSK41htVcqAAAAAElFTkSuQmCC";

const spriteSize = 16;
const spriteScaled = 32;

let tileMap;
let test_image;

function preload() {
  tileMap = loadImage(imgUrl);
}

function setup() {
  createCanvas(1024, 800);
  noSmooth();

  let _c = 0; // col lookup into spritesheet
  let _r = 0; // row lookup into spritesheet
  test_image = createImage(spriteSize, spriteSize);
  // Don't resize when copying. This will cause interpolation to happen.
  test_image.copy(
    tileMap,
    _c * spriteSize,
    _r * spriteSize,
    spriteSize,
    spriteSize,
    0,
    0,
    spriteSize,
    spriteSize
  );
}

function draw() {
  // Only resize when you actually draw the sprite
  image(test_image, 0, 0, spriteScaled, spriteScaled);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 p5.js 中放大时精灵模糊 的相关文章

  • 使用 pygame.transform.rotate 时内存不足

    我写了一个脚本 允许用户控制老鹰的精灵飞来飞去以学习pygame 看起来很好 直到我实现了一个旋转函数 使精灵根据其飞行方向旋转 移动一小会儿后 精灵变得非常模糊 很快就会弹出一个错误 内存不足 在这一行 eagle img pygame
  • 在 Firefox 中使用缩放变换实现 CSS 过渡效果后的图像移动/跳跃

    我最近遇到一个问题Firefox浏览器版本34 系统 Windows 7 屏幕宽度 1600px 将鼠标悬停在图像上 在某些容器中 后 我通过缩放图像来实现效果 我在用变换 缩放 1 1 with 过渡 变换 0 3s 缓入缓出 但是当我将
  • 如何在不移动 X、Y 位置的情况下缩放视图?

    我有一个RadioGroup我正在尝试缩小规模 因为它太大了 所以我用setScaleX and setScaleY 并将其缩小 它可以工作 但问题是当我缩放视图时 视图会改变 X 和 Y 位置 我希望它在缩放后保持相同的左上角坐标 如何让
  • 如何使用 StandardScaler 标准化 Spark 中的一列?

    我正在尝试标准化 平均值 0 标准 1 我的数据框中的一列 年龄 下面是我在 Spark Python 中的代码 from pyspark ml feature import StandardScaler from pyspark ml f
  • 变换:缩放 - 处理初始大小的剩余“边距”

    我使用 iframe 元素作为混合视频和图像内容的预览窗口 缩小的 iframe 效果很好 因为它允许我们的客户查看与电视屏幕上显示的图像接近的图像 我想在 iframe 下方添加一些按钮 但是该按钮显示在 iframe 下方 符合 ifr
  • 旋转、缩放和平移 2D 坐标?

    我目前正在开发一个项目 尝试使用 Python 成像库创建希尔伯特曲线 我创建了一个函数 它将通过每次迭代生成曲线的新坐标 并将它们放入各种列表中 然后我希望能够移动 旋转和缩放 我想知道是否有人可以给我一些提示或方法来做到这一点 因为我完
  • 如何用圆圈替换光标,而不是在 p5.js 中将其绘制到画布上?

    问题 我正在尝试使用 p5 js 创建一个简单的绘图应用程序 我想在光标位置显示一个代表画笔大小的圆圈 而不是标准光标图像 可能的解决方案1 使用替换光标cursor p5 的原生函数 为什么它不起作用 The p5光标功能 https p
  • 如何将 Sprite 纹理更改为动画

    我有一个每秒生成的精灵 我不想做的是将精灵纹理更改为动画 并且当它被触摸时它将恢复为正常纹理 public void draw SpriteBatch batch enemyIterator enemies iterator arrayli
  • As3:将重叠的矩形绘制到精灵并应用 alpha

    我需要画画独立的矩形到精灵 但是重叠区域如果我申请就会可见alpha到我的精灵 精灵将淡入和淡出 var spBox Sprite new Sprite this addChild spBox spBox graphics beginFil
  • Pygame 根据位置重叠精灵(绘制顺序)

    总的来说 我对 Pygame 和 Python 还比较陌生 所以希望这不是太陌生 I m making a top down RPG and I have two Sprite objects with images that look f
  • CSS3 缩放变换和溢出问题:在 Safari 上隐藏

    我在 Safari 上遇到缩放变换效果和溢出问题 当我在 div 内容上使用此效果时 溢出在圆形容器上不起作用 这是我的代码 container width 100px height 100px border radius 50 backg
  • 控制和创建多个精灵数组 Java Libgdx

    我正在尝试创建一个具有精灵的游戏 并且每秒都会生成另一个精灵 我尝试使用它作为基础 https github com libgdx libgdx wiki A simple game https github com libgdx libg
  • 以良好的质量和内存效率缩小资源中的位图

    我想缩小 500x500px 资源以始终适合由屏幕宽度确定的特定尺寸 目前我使用 Android 开发者网站 高效加载大位图 http developer android com training displaying bitmaps lo
  • 在ExoPlayer中,到底如何使用SimpleExoPlayer.setVideoScalingMode就像在ImageView center-crop中一样?

    背景 我正在尝试以中心裁剪方式显示视频 就像在 ImageView 上一样 我也希望我能找到如何以其他方式扩展规模 就像上所做的那样这个图书馆 https github com yqritc Android ScalableVideoVie
  • CSS3 - 在精灵图像的“背景位置”之间淡入淡出

    我想在精灵图像的 背景位置 之间淡入淡出仅使用CSS 我找到了很多教程 但没有找到像这样简单的东西
  • 在 OpenGL 中移动相机时出现故障

    我正在为 iPhone 编写一个基于图块的游戏引擎 除了以下故障之外 它基本上可以正常工作 基本上 相机将始终将玩家保持在屏幕中央 并且它会移动以正确跟随玩家并在静止时正确绘制所有内容 然而 当玩家移动时 玩家行走的表面瓷砖会出现故障 如下
  • R 使用值列表作为色标

    我想将变量的值表示为 R 中散点中的点的颜色 x lt rnorm 100 5 y lt rnorm 100 5 plot x y 在这里 我想使用一个变量作为着色的输入 但如果我尝试 plot x y col x 我得到了一些奇怪的东西
  • 找不到不使用 GL11Ext 进行绘图的 android 2d opengl sprite 类的合适示例

    正如 SpriteMethodTest 所说 绘制精灵的方法有很多种 首先 我尝试了canvas 并遇到了一些性能问题 接下来 我决定学习opengl 我使用 GL11Ext 扩展取得了第一个成就 但是 默认情况下您知道 当您绘制纹理时 它
  • Unity-3d-5 将 16:9 的图像缩放至其他分辨率

    所以我创建了一个蛇游戏 其边框是用 2d 精灵创建的 我将游戏窗口设置为 16 9 在此分辨率下图像看起来不错 然而 扩展到其他任何东西开始让游戏看起来很奇怪 我想要调整游戏窗口的大小 如何让我的精灵根据当前分辨率拉伸和收缩 我已经尝试创建
  • 响应式图像悬停 - CSS/JQuery

    我按照这个教程 http mattbango com notebook code hover zoom effect with jquery and css http mattbango com notebook code hover zo

随机推荐

  • 绑定到 AvalonDock 2 中的 LayoutAnchorableItem 可见性

    我正在尝试绑定Visibility of LayoutAnchorableItem到 ViewModel 中的布尔值 以便我可以以编程方式显示和隐藏可锚定
  • .rmd 文件的访问名称并在 R 中使用

    我正在编织一个名为MyFile rmd 我如何访问该字符串MyFile在编织过程中并将其用于 在 YAML 标头的标题部分中使用 在后续的 R 块中使用 title r rmarkdown metadata title author My
  • 如何在maven antrun插件中执行输入任务

    我创建了一个 Maven 项目 我正在尝试运行外部脚本 在此外部脚本中 我使用 read 命令来提出问题并获得答案 如果我做一个 它会起作用sudo mvn 包 with 执行 maven 插件 http www mojohaus org
  • Android 位图图像缓存

    嗨 我正在 Android 中实现图像缓存 经历过这个 http developer android com training displaying bitmaps cache bitmap html http developer andr
  • 如何在滑块上方添加刻度和标签?

    我尝试使用 Slider 划分看起来不错 值 gt 50 10 20 但是 如何在滑块上方添加刻度和标签 Expect 勾选将根据滑块位置改变颜色 Actual Slider min 0 max 100 value value onChan
  • UITableView的separatorEffect属性有什么用?

    iOS 8 中的新功能是separatorEffect属性 您可以为其分配 UIVisualEffect 有谁知道这是做什么用的吗 我试过了 但我不认为它有任何 呃 视觉效果 我想知道完全相同的事情 所以我放了一个Github https
  • random.seed():它有什么作用?

    我有点困惑什么random seed 在 Python 中是这样的 例如 为什么下面的试验会 一致地 做他们所做的事情 gt gt gt import random gt gt gt random seed 9001 gt gt gt ra
  • wxPython:在现有 wx.Panel 上覆盖 wx.Panel 的好方法

    我有一个 wx Frame 其中有一个主 wx Panel 其中有几个小部件 我想要其中的一个按钮来启动 帮助面板 这个帮助面板可能是一个wx Panel 我希望它覆盖整个主wx Panel 不包括wx Frame的菜单栏 帮助按钮上应该有
  • 如何在 HTML 文件中包含 python 脚本?

    我该如何放置这个Python脚本 a f d s a x 1 scope vars for i in a scope x 1 print a x html 文件里面 像这样 如果你想创建一个html 不一定显示它 html file ope
  • pygame中盒子的连续移动

    我编写了以下代码来创建一个简单的游戏 当您单击键盘上的箭头时 一个框会在游戏中移动一个单位 我试图做到这一点 以便如果我按下任何箭头按钮 盒子将继续朝该方向移动 直到按下另一个箭头 因此 如果我按一次向右箭头而不是快速移动 50 像素 它将
  • 如何使用 ES6 样式导入添加外部 javascript 库?

    我无法准确理解如何在新的 ES6 项目中使用旧的 javascript 库 我正在查看一个使用 webpack 编译 使用 ES6 编写并使用 Babel 转译的 React 项目 每个组件都遵循import from 符号 我想在项目中使
  • 类继承命名

    我想继承 DevExpress ComboBoxEdit 控件 并且想知道将我的类命名为与 DevExpress 类相同的名称是否是不好的做法 这是派生类声明 using System using System Collections Ge
  • 如何在 Jenkins Freestyle 项目中使用可锁定资源插件中的 Groovy 表达式

    这个问题是针对旧版本提出的可锁定资源插件 https wiki jenkins ci org display JENKINS Lockable Resources Plugin 旧版本中的错误自2 1版本以来已得到修复 然而 没有描述如何在
  • 使用 Buildbot 支持多个存储库

    目前 Buildbot 不支持多个存储库 如果需要这一点 则需要运行单独的 Buildbot 实例 我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能正常工作 Update 这个答案最近收到了一些反对票 请注意 这个答案适用于 20
  • 刚刚通过 NuGet 更新了 ImageResizer,无法运行应用程序,因为它找不到 BundleAttribute

    我只是想更新 Azure 存储 但这意味着我需要更新 ImageResizer AzureReader 并更新应用程序以使用 Net 4 5 2 Azure 站点设置为 Net 4 6 现在我已经拥有了最新版本的所有内容 我已经清理并重建了
  • Prismic - 如何在不暴露访问令牌的情况下进行 API 调用

    我正在构建一个 vue js Web 应用程序 我想对我的 prismic 存储库进行相应的调用 但我不知道如何在不暴露我的访问令牌的情况下执行此操作 我正在使用所示的其余 api 方法here https prismic io docs
  • 背景图像:如果图像很小,如何填充整个div,反之亦然

    我有三个问题 当我尝试在较小尺寸的 div 中使用背景图像时 div 仅显示图像的一部分 如何显示图像的完整或特定部分 我有一个较小的图像 我想在更大的 div 中使用 但不想使用重复功能 CSS 有什么方法可以控制图像的不透明度吗 调整图
  • 如何隐藏 Akka 远程 Actor 来查找?

    我正在运行 Akka 2 0 2 微内核 并希望为不受信任的远程参与者实现身份验证方案 首先想到的是设置一个身份验证参与者 当身份验证成功时 该参与者会返回对工作参与者的引用 但是 我应该如何保护工作参与者不被简单地通过 actorFor
  • R:使用 devtools 自动将 import(data.table) 添加到 NAMESPACE

    如何正确添加import data table to the NAMESPACE自动使用文件devtools 一般来说 如果我的包使用data table我只是手动写入 但是无法使用 export and devtools document
  • 在 p5.js 中放大时精灵模糊

    我试图将 p5 js 中精灵的大小放大一点 系数 2 但渲染时它们看起来很模糊 显然 放大通常不是一个好主意 但是我已经成功地使像素化精灵在原始 JavaScript 中看起来清晰 基于这篇文章 https nluqo github io