问题标签 [bitmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - Papervision 渲染到位图
有谁知道使用 Papervision 渲染器将 3D 场景渲染到位图的方法?我想对我的场景进行定格,当我在背景中更改场景时可以显示它。
flash - Flash/ActionScript:将显示对象“绘制”到另一个“上”
如何在 ActionScript 中正确地将一个矢量对象绘制到另一个矢量对象的特定位置,并考虑定位、透明度等?
我的想法(如这里所建议的那样)是使用beginBitmapFill
() 和() 将一个 MovieClipdrawRect
的位图副本(使用() 制作)绘制到 . 另一个 MovieClip 的属性,但事实证明这比我想象的要困难,主要是因为以下原因:BitmapData.draw
graphics
不保留透明度:源影片剪辑是透明的,目标图形变为白色。我试过使用 a似乎问题在于BlendMode
,但它没有帮助。似乎白色像素实际上被复制到 BitmapData 中。我一定错过了什么,但我不知道是什么。BitmapData
构造函数的文档是错误的:透明度不默认为true,而是false。所以如果你创建的new BitmapData(x, y, true)
透明度是保留的,否则不会。定位。如果源影片剪辑居中(中心位于 (0, 0),则在将其复制到 BitmapData 时必须应用矩阵来移动它,否则位图将仅包含源影片剪辑的右下角。弄清楚如何移动它很棘手,我认为它涉及以某种方式获取边界。(如果源对象在其画布中完全居中,您可以简单地将其偏移其宽度和高度的一半,当然。)
beginBitmapFill
平铺。似乎如果您不在drawRect
(0, 0) 处开始 (),则位图填充也不会从位图中的 (0, 0) 开始。这意味着您必须根据要开始绘制的位置再次移动源位图。
(然后还有其他东西,比如必须 lineStyle(0,0,0) 所以 drawRect() 不画边框等)
所有这些棘手的麻烦让我相信我正在以错误的方式解决这个问题。有没有更简单的方法来做到这一点?有没有图书馆可以帮助我?有没有人成功做到这一点?也许我的绘图画布不应该是 Sprite 而是 Bitmap?但是后来我不知道如何使用lineTo
() 等来绘制它。
情况如下:我有一个 Sprite,我使用它的 .graphics、lineTo() 等绘制它。现在我想在绘制时使用一个 MovieClip 作为画笔(或者只是将另一个 MovieClip 的副本放在绘图表面上),使另一个 MovieClip 成为第一个的图形的一部分。我不能addChild
() 因为那样矢量图形不会与绘制的图形交互。
编辑:Theo提供了一个完美的工作解决方案,除了它不应用应用于被绘制到图形表面上的 DisplayObject的旋转和缩放。这是Theo 的解决方案:
为了支持旋转和缩放,我假设必须修改以下内容:
- 使用
Matrix
的draw()
应该从源复制缩放和旋转DisplayObject
? Matrix
使用的 in也beginBitmapFill()
应该复制这个缩放和旋转?或者这可能会产生“双重”缩放和旋转?drawRect()
应该修改坐标以匹配缩放和旋转的大小DisplayObject
?哪种方式getBounds()
不准确?
编辑:这是一个支持缩放和旋转的工作实现,由所有反馈制成:
有点相关但不那么热门的问题:如何在 Flex 3 中的图形上放置图像(例如 PNG)?
iphone - 如何从 iPhone 上的 BitmapContext 中提取 ARGB 组件?
我正在尝试使用以下代码从 CGBitmapContext 获取 ARGB 组件:
}
当我尝试存储红/绿/蓝时,结果总是 240。而 alpha 总是 255。
所以我认为指针可能有问题。它无法返回我想要的正确 ARGB 数据。关于代码有什么问题的任何想法?
iphone - 如何读取 CGBitmapContextData?(在 iPhone 上)
我正在努力从图像中获取 ARGB 等位图数据。
一种)。我为图像创建了一个位图上下文:
乙)。我将图像绘制到上下文中:
C)。然后我从位图上下文中获取数据:
d)。无效...不可读?
我发现它只返回一个指向图像上下文数据的 void 指针,这意味着无法获取上下文的数据(只写)。还有其他方法可以从上下文数据中返回值吗?
PS:如果我创建一个无符号字符指针 * 数据,它将为 RGB 返回 240,为 alpha 返回 255,这不是正确的颜色分量。
c# - 如何在 .NET 中使用大位图?
我正在尝试编写一个轻量级的图像查看应用程序。但是,.NET 存在系统内存限制。
尝试加载大型位图(9000 x 9000 像素或更大,24 位)时,我收到 System.OutOfMemoryException。这是在具有 2GB RAM(其中 1.3GB 已用完)的 Windows 2000 PC 上。尝试加载文件也需要很多时间。
以下代码生成此错误:
与此代码一样:
此外,这样做就足够了:
后一个代码旨在与 GDI 一起使用。在研究这一点时,我发现这实际上是一个内存问题,其中 .NET 尝试在单个连续内存块中分配两倍于所需的内存。
http://bytes.com/groups/net-c/279493-drawing-large-bitmaps
我从其他应用程序(Internet Explorer、MS Paint 等)中知道可以打开大图像,而且速度相当快。我的问题是,如何在 .NET 中使用大型位图?
无论如何要流式传输它们,还是非内存加载它们?
.net - 如何从 RGB 初始化 48bpp 位图?
我正在用托管 C++ 编写一个解释器,用于 PPM 图像格式等。图像规范允许每个通道每像素最多两个字节的图像,或每像素 48 位彩色图像。我正在尝试读取这种格式并将其转换为 .Net 位图,但我无法使其正常工作。当我有每像素 24 位的图像时,我像这样初始化它们:
对于每像素 48 位的图像,我将 bmp 初始化如下:
但是,当尝试填充像素数据时,我无法使用 'Color::FromArgb()' 指定任何颜色值,R、G 和 B 的值大于 255。有没有办法绕过这个限制?
c# - 在 Compact Framework (C#) 中调整大小(放大和缩小)
如何在 Compact Framework 上放大位图?我阅读了这篇文章和http://geeks.netindonesia.net/blogs/clawford/archive/2008/04/20/resizing-bitmap-tutorial-in-net-cf.aspx,它只是为了使位图更小。
谢谢!
c# - 读取单色位图像素颜色
我不知道更好的标题,但我会描述这个问题。
我们使用的硬件具有显示图像的能力。它可以显示分辨率为 64 x 256 的黑白图像。
问题是我们必须发送到设备的图像格式。它不是标准的位图格式,而是一个简单的字节数组,代表图像的每个像素。
0 = 黑色,1 = 白色。
因此,如果我们有一个大小为:4 x 4 的图像,字节数组可能看起来像:
1000 0100 0010 0001
图像看起来像:
位图 http://www.mediafire.com/imgbnc.php/6ee6a28148d0170708cb10ec7ce6512e4g.jpg
问题是我们需要通过在 C# 中创建单色位图来创建此图像,然后将其转换为设备可以理解的文件格式。
例如,可以在设备上显示文本。为此,他必须创建一个位图并向其写入文本:
这里有2个问题:
- 生成的位图不是单色的
- 生成的位图具有不同的二进制格式
所以我需要一种方法:
- 在 .NET 中生成单色位图
- 读取位图中每个像素的单个像素颜色
我发现您可以将像素深度设置为 16、24 或 32 位,但没有找到单色,我不知道如何读取像素数据。
欢迎提出建议。
更新:我不能使用 Win32 PInvokes ......必须是平台中立的!
跟进:以下代码现在对我有用。(以防万一有人需要)
c++ - 计算单色 BMP 的 BITMAPINFOHEADER biCompression 值
希望有人有答案,而且不是太复杂。我正在研究一个 C++ dll(没有 C# 或 .Net,完全静态的 DLL)。
无论如何,它在内置单色位图上工作。除了决议,我所有的一切都在工作。我得到设备上下文,获取兼容的设备上下文,构建位图,绘制我需要的东西(黑色/白色),并且可以保存。这一切都很好。但是,我不知道如何设置位图的分辨率。
在 C# 下从另一个实用程序进行一些测试时,我可以创建一个位图并设置分辨率。在这样做的过程中,我运行了一个例程来生成相同的文件内容,其参数从 1 到 300 用于分辨率。除了“biCompression”DWORD 属性中的值之外,每个图像的输出完全相同。默认是96x96的屏幕分辨率,但是对于300x300的打印机需要明显改变,甚至有些是203x203的分辨率。
image-processing - 如何在 OCAML 中读取位图?
我想使用 OCAML 读取位图文件(从文件系统),并将像素(颜色)存储在具有位图维度的数组中,每个像素将占用数组中的一个单元格。
我找到了函数Graphics.dump_image image -> color array array 但它没有从文件中读取。