标签: antialiasing

HTML5的canvas元素上的子像素消除锯齿的文本

我对canvas元素反锯齿文本的方式有点困惑,我希望你们都能提供帮助.

在下面的屏幕截图中,顶部的"Quick Brown Fox"是一个H1元素,底部的是一个在其上呈现文本的canvas元素.在底部你可以看到两个"F"并排放置并放大.注意H1元素如何与背景更好地融合:

这是我用来渲染画布文本的代码:

        var canvas = document.getElementById('canvas');
        if (canvas.getContext){

            var ctx = canvas.getContext('2d');
            ctx.fillStyle = 'black';
            ctx.font = '26px Arial';
            ctx.fillText('Quick Brown Fox', 0, 26);
        }
Run Code Online (Sandbox Code Playgroud)

是否可以以某种方式在画布上呈现文本,使其看起来与H1元素相同?为什么他们不同?

html5 text canvas antialiasing subpixel

45
推荐指数
3
解决办法
3万
查看次数

Retina显示屏是否消除了抗锯齿的需要?

使用iPhone 4,Retina显示器的分辨率非常高,以至于大多数人无法区分像素(假设).如果是这种情况,那么支持Retina显示屏的应用程序是否仍然需要消除锯齿以使字体和图像平滑,或者这不再是必要的吗?


编辑:我对更详细的信息感兴趣.开始赏金.

iphone antialiasing

44
推荐指数
5
解决办法
7163
查看次数

OpenGL ES iPhone - 绘制抗锯齿线

通常,你会使用类似的东西:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);

glLineWidth(2.0f);

glVertexPointer(2, GL_FLOAT, 0, points);
glEnableClientState(GL_VERTEX_ARRAY);

glDrawArrays(GL_LINE_STRIP, 0, num_points);

glDisableClientState(GL_VERTEX_ARRAY);
Run Code Online (Sandbox Code Playgroud)

它在iPhone模拟器中看起来不错,但在iPhone上,线条变得非常薄,没有任何抗锯齿.

你如何在iPhone上获得AA?

iphone opengl-es line antialiasing

37
推荐指数
3
解决办法
4万
查看次数

在Mountain Lion中禁用Xcode 4.4中的抗锯齿字体

继续与这个斗争变得非常沮丧.我不确定它是Xcode 4.4还是Mountain Lion(我同时安装了两个),但我的代码再一次在Xcode中被消除锯齿(字体平滑).

我之前能够通过以下说明解决此问题,这些说明来自此问题,但现在似乎都不起作用:

对于XCode 3.x,我会做以下事情:defaults write com.apple.xcode AppleAntiAliasingThreshold 24.

对于XCode 4,用户默认的域更改为com.apple.dt.Xcode.对于XCode 4 defaults write com.apple.dt.Xcode AppleAntiAliasingThreshold 24应该得到你想要的.

如何让Xcode恢复到可用状态?

xcode antialiasing font-smoothing xcode4.4 osx-mountain-lion

35
推荐指数
3
解决办法
8894
查看次数

Windows下R图形中的抗锯齿(根据Mac)

有没有办法从Windows版本的R中绘制抗锯齿图形?正如你从下面的两个版本中可以看到,Mac版的R打印图形抗锯齿.... Mac版

....虽然Windows版本反锯齿文本,但它不会对实际图形进行反锯齿,如从提升点和网格中可以看到的: Windows版本

这是代码的代码:

library(scatterplot3d) 
attach(mtcars) 
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
  type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp) 
s3d$plane3d(fit)
Run Code Online (Sandbox Code Playgroud)

我需要最高质量的网页发布.我正在运行Windows 7并从RBloomberg中提取数据,这只能在Windows下运行.

r antialiasing

32
推荐指数
3
解决办法
1万
查看次数

利用核心动画伪造文本上的子像素抗锯齿

对于使用Core Animation图层支持视图的项目工作的任何人来说,遗憾的是,对于未在预先设置的不透明背景上呈现的文本,禁用了子像素抗锯齿(文本平滑).现在,对于能够为其文本设置不透明背景的人(通过setBackgroundColor:调用或Interface Builder中的等效设置),此问题不会出现太多问题.但对于其他人来说,绝对没有办法解决它,这不是一个人们无法忽视的事情.

我已经在网上寻找了两天以上的解决方案,并没有任何可用的东西出现.我想要做的就是创建一个在工作表窗口上设置的文本标签(不是用户可编辑的)(工作表窗口背景是透明的,因此将工作表的内容视图声明wantsLayer为true会禁用窗口上所有标签的文本平滑); 非常简单.我已经看到很多有争议的解决方案(快速谷歌搜索将在许多其他地方提出这个主题),但到目前为止,所有这些解决方案依赖于人们能够并愿意与不透明的背景妥协(你不能在一张纸上使用).

到目前为止,我可以想象的最佳方向是将文本预渲染到文本平滑到图像上,然后像往常一样在图层支持的视图上显示图像.但是,这似乎不可能.我认为可以尝试的"正常"方式是:

NSAttributedString *string = [[self cell] attributedStringValue];
NSImage *textImage = [[NSImage alloc] initWithSize:[string size]];
[textImage lockFocus];
[string drawAtPoint:NSZeroPoint];
[textImage unlockFocus];
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用(很可能是因为调用时drawRect:,图形上下文设置已禁用文本平滑 - 关闭子像素抗锯齿,而使用常规抗锯齿),但更多涉及的解决方案也没有找到这个问题(你在哪里创建自己的图形上下文).

那么如何做这样的事情呢?你能以某种方式"伪造"文本平滑的效果吗?是否有甚至黑客攻击的解决方案可以设置一些东西?我真的不想因为这个愚蠢的问题而放弃核心动画; 它有很多好处,可以节省大量的时间和代码.


编辑:经过大量搜索,我找到了一些东西.虽然线程本身只是重申了我的怀疑,但我想我可能已经找到了解决这个问题的方法:自定义CALayer绘图.Timothy Wood在他的一篇回复中附上了一个示例项目,该项目使用几种技术显示字体平滑,其中一些技术起作用.我会考虑将它集成到我的项目中.

编辑#2:结果,上面的链接也是一个半身像.尽管链接的方法提供了亚像素抗锯齿,但它们在透明背景上也会失败.

cocoa text core-animation objective-c antialiasing

31
推荐指数
1
解决办法
4135
查看次数

在Canvas上绘制平滑缩放的位图

这是我画BitmapCanvas的我的Android应用:

canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
Run Code Online (Sandbox Code Playgroud)

但是,Bitmap没有平滑缩放,不执行抗锯齿.如何启用抗锯齿功能?

android antialiasing android-canvas

30
推荐指数
2
解决办法
4万
查看次数

改变matplotlib中抗锯齿的强度

是否有可能增加matplotlib中的抗锯齿效果?我仍然可以在我的数据中看到一些别名,我尝试了几个后端,它仍然存在.线路的抗锯齿标志已设置.

在这里你可以看到我的意思

在此输入图像描述

这是一个取自截图的样本.这可能不是最好的例子,但我想可以看到线路上的楼梯.它是用wxagg后端拍摄的.

我在Windows 7中使用matplotlib版本1.01.

更新:我没有产生上一张图片的代码,但我仍然有问题.下面是一个显示别名的简单代码示例.

import numpy as np
import matplotlib
matplotlib.use('wxAgg')
import matplotlib.pyplot as pl
print 'Backend:', pl.get_backend()

x = np.linspace(0,6,100)
y = np.sin(x)

for a in range(10):
    pl.plot( x, a/10.*x, linewidth=1)

pl.show()
Run Code Online (Sandbox Code Playgroud)

它打印出来的Backend: WXAgg 结果图如下所示. 别名

特别是较低的红色曲线显示清晰的混叠.

python matplotlib antialiasing

28
推荐指数
2
解决办法
5457
查看次数

在WPF中平滑图像边缘

我在WPF应用程序中使用Image控件时有一些256x256图像.虽然它们都是256x256,但我将一些控件更改为64x64等.当我将其调整大小时(使用fill作为我的拉伸属性),边缘变得非常粗糙.即使是像三角形这样简单的东西,也很明显:

在此输入图像描述

有没有一个很好的解决方案,或者我需要在将它们放入应用程序之前调整photoshop中的图像大小?

c# wpf image antialiasing

27
推荐指数
1
解决办法
1万
查看次数

设置LCD伽玛/对比度(IntelliJ IDEA,JDK 8)

我在IntelliJ IDEA中遇到了反锯齿文本的问题.那个东西由于某种原因附带了自己版本的OpenJDK 8.无论如何......子像素别名对于明亮的暗文本是可以接受的:

在此输入图像描述

但对于明亮的黑暗文本,伽玛是错误的:

在此输入图像描述

这意味着在这个方案中,文本看起来好像是粗体和水平模糊/模糊.

是否可以指定系统属性或破解系统,否则将AA插值的伽玛值更改为更暗的颜色?我已经选择了一个非常精细的字体(FicaCode Light),在这台计算机上没有显示较少粗体的字体(带有Gnome 3,19000x1080显示屏的Linux).


编辑:我真的在寻找一种控制AA伽玛的方法.我没有使用过IDEA 2017.1 EAP,但是发布版本已经附带了"固定"捆绑调整版本1.8.0_112,这在gist评论中提到过.如果我下载该版本,我会得到与上面两张图像完全相同的像素输出.这些是idea64.jvmoptions:

自定义IntelliJ IDEA VM选项

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Djava2d.font.loadFontConf=false
Run Code Online (Sandbox Code Playgroud)

添加或删除最后一个属性只是使零差价,也改变从lcdonoff具有零效果.

将这些图片与我通过Debian安装的常规OpenJDK 1.8.0_121进行比较:

在此输入图像描述

很明显,这里的AA被破坏了(1:1它看起来完全是彩色的).所以我认为捆绑版本的子像素渲染基本上是正确的.只有在深色背景上使用错误的伽玛才能显示浅色文字.


编辑:经过更多的调查,问题归结为:我可以使用之间的自定义font.conf文件,和.对于轻微提示,字体在宽高比方面看起来平衡,但抗锯齿具有错误的伽玛,因此字体线条很粗(一切看起来都是粗体).对于中等或完全提示,字体看起来更细,更清晰,但现在宽高比被打破,字体太宽.hintstylehintslighthintmediumhintfull

java intellij-idea java-2d antialiasing text-rendering

26
推荐指数
1
解决办法
874
查看次数