求Java图像放大后不失真的代码!!!!网上没找到~!

2025-12-18 02:49:51
推荐回答(3个)
回答1:

其实,这个算法老复杂了。

最近像素插值算法是最简单的一种插值算法,当图片放大时,缺少的像素通过直接使用与之最接近的原有的像素的颜色生成,也就是说照搬旁边的像素。它是三种内插值方式中质量最差的一种,用该方法修改后的图像边缘有锯齿,但速度较快。

双线性插值算法是沿水平和垂直方向对周围像素取样,然后建立像素颜色总数的平均颜色值。这种算法极大地消除了锯齿现象,在计算速度与质量两个方面都居于三种方法中间地位。

双立方插值算法是在水平、垂直和对角线方向对像素取样,然后使用总颜色的加权平均值建立新像素,它是三者中运算速度最慢,但效果最佳的一种。

回答2:

public Image getScaledInstance(int width,
int height,
int hints)
创建此图像的缩放版本。返回一个新的 Image 对象,默认情况下,该对象按指定的 width 和 height 呈现图像。即使已经完全加载了初始源图像,新的 Image 对象也可以被异步加载。
如果 width 或 height 为负数,则替换该值以维持初始图像尺寸的高宽比。如果 width 和 height 都为负,则使用初始图像尺寸。

参数:
width - 将图像缩放到的宽度。
height - 将图像缩放到的高度。
hints - 指示用于图像重新取样的算法类型的标志。
返回:
图像的缩放版本。
hints 有以下几种参数:Image.SCALE_SMOOTH(图形质量优先) Image.SCALE_DEFAULT使用默认的图像缩放算法。Image.SCALE_FAST选择一种图像缩放算法,在这种缩放算法中,缩放速度比缩放平滑度具有更高的优先级。

回答3:

每张图都有原始大小,放大超过了原始大小一定会失真,没有什么不失真的代码或技术