由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 怎么能够减少image上的锯齿?
相关主题
用java画直线的问题Java 里划直线加粗的问题
请问Java如何实现对.jpg图片的缩放显示?java graphics2d 画图请教
怎么编辑和保存JAVA的图片输出?Apply lock on a class.
请教BufferedImage中的setColor问题。问一个关于access object instance的问题
有关BufferedImage width/height 的问题help! BufferedImage
How to scroll an JInternalFramejava image processing problem
how to improve java programming abilityJava可行性一问:画图然后保存为图像?
用java 2D作图, 画线条的时候都成锯齿状怎么办How would clear a BufferedImage?
相关话题的讨论汇总
话题: 锯齿话题: g2d话题: image话题: graphics2d
进入Java版参与讨论
1 (共1页)
d*r
发帖数: 238
1
当我有一些jpg文件,Dimension 是800x600,我要用1024x768来显示的时候,有些图像的
边缘就出现锯齿。
我不知道用什么方法能去掉这些锯齿。
我用了Graphics2D和AffineTransform的scale() function.
如果用C#的PictureBox就没有任何锯齿出现。
F****n
发帖数: 3271
2
直接用Graphics2D的Transform会把所有细节放大, 当然会有剧齿,
你自己CREATE 一个SCALED的IMAGE不就行了.



【在 d*r 的大作中提到】
: 当我有一些jpg文件,Dimension 是800x600,我要用1024x768来显示的时候,有些图像的
: 边缘就出现锯齿。
: 我不知道用什么方法能去掉这些锯齿。
: 我用了Graphics2D和AffineTransform的scale() function.
: 如果用C#的PictureBox就没有任何锯齿出现。

d*r
发帖数: 238
3
If I know how to do that, I would not be here asking.
//sigh.
书到用是方狠少。



【在 F****n 的大作中提到】
: 直接用Graphics2D的Transform会把所有细节放大, 当然会有剧齿,
: 你自己CREATE 一个SCALED的IMAGE不就行了.
:
: 的

F****n
发帖数: 3271
4
同学, 不是我说你, 为什么不看看API呢? Image这个类本身就实现了SCALE的算法.



【在 d*r 的大作中提到】
: If I know how to do that, I would not be here asking.
: //sigh.
: 书到用是方狠少。
:
: 像

d*r
发帖数: 238
5
I tried Image.getScaledInstance() and use Image.SCALE_SMOOTH as parameter. But
it is too slow.



【在 F****n 的大作中提到】
: 同学, 不是我说你, 为什么不看看API呢? Image这个类本身就实现了SCALE的算法.
:
: 图

F****n
发帖数: 3271
6
首先, 这取绝于你的目的到底是什么, 如果你就是想ZOOM IN/OUT而不对IMAGE进行修改,
那么800/600放到1024/768肯定有锯齿, 没有剧齿才是不正确的, 用AffineTransform就行
了,
如果你想修改IMAGE, 那么必然要CREATE一个SCALED的INSTANCE, 肯定会有一些计算, 会
花一些处理时间, 但也是正常的, JAVA一般在这些地方不会比C慢.

But


【在 d*r 的大作中提到】
: I tried Image.getScaledInstance() and use Image.SCALE_SMOOTH as parameter. But
: it is too slow.
:
: 些

B******N
发帖数: 445
7
you are wrong, it's better not create scale instance, which will be very slow.
the correct answer:
BufferedImage targetImage = new BufferedImage(targetWidth,
targetHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = targetImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.drawImage(srcImage, 0, 0, targetWidth, targetHeight, null);
g2d.dispose();
you will get much fa

【在 F****n 的大作中提到】
: 首先, 这取绝于你的目的到底是什么, 如果你就是想ZOOM IN/OUT而不对IMAGE进行修改,
: 那么800/600放到1024/768肯定有锯齿, 没有剧齿才是不正确的, 用AffineTransform就行
: 了,
: 如果你想修改IMAGE, 那么必然要CREATE一个SCALED的INSTANCE, 肯定会有一些计算, 会
: 花一些处理时间, 但也是正常的, JAVA一般在这些地方不会比C慢.
:
: But
: 有

F****n
发帖数: 3271
8
Don't know what your talking about,
你难道不是在建立一个SCALED INSTANCE????

slow.

用AffineTransform就
parameter.
法.


【在 B******N 的大作中提到】
: you are wrong, it's better not create scale instance, which will be very slow.
: the correct answer:
: BufferedImage targetImage = new BufferedImage(targetWidth,
: targetHeight, BufferedImage.TYPE_INT_RGB);
: Graphics2D g2d = targetImage.createGraphics();
: g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
: RenderingHints.VALUE_INTERPOLATION_BILINEAR);
: g2d.drawImage(srcImage, 0, 0, targetWidth, targetHeight, null);
: g2d.dispose();
: you will get much fa

F****n
发帖数: 3271
9
总之取决与需要, 可能会有三种情况:
1. 象MS PAINT那样忠实反映相素的, 用AffineTransform;
2. 象HTML上那样的只要任意大小的显示的, 直接用Graphics drawImage;
3. 要Edit就必需create 新的 scaled instance.


算,



【在 F****n 的大作中提到】
: Don't know what your talking about,
: 你难道不是在建立一个SCALED INSTANCE????
:
: slow.
: 改
: 用AffineTransform就
: parameter.
: 法.
: 候

B******N
发帖数: 445
10
thanks.
the algorithm used by getScaleInstance() is much slower than g2d draw, also
use a lot of memory. It could be the reason it's pure java calculation. the
g2d is calling native method.



1 (共1页)
进入Java版参与讨论
相关主题
How would clear a BufferedImage?有关BufferedImage width/height 的问题
读写gif图片,不用第三方包How to scroll an JInternalFrame
getImage有个问题how to improve java programming ability
Concurrent Exception in Swing用java 2D作图, 画线条的时候都成锯齿状怎么办
用java画直线的问题Java 里划直线加粗的问题
请问Java如何实现对.jpg图片的缩放显示?java graphics2d 画图请教
怎么编辑和保存JAVA的图片输出?Apply lock on a class.
请教BufferedImage中的setColor问题。问一个关于access object instance的问题
相关话题的讨论汇总
话题: 锯齿话题: g2d话题: image话题: graphics2d