相关疑难解决方法(0)

Android:使用比双线性更好的重采样算法调整位图大小(如Lanczos3)

是否有任何方法或外部库可以使用Lanczos(理想情况下)或至少bicubic alg 调整图像大小.Android下?(当然更快更好,但质量优先,处理时间次要)

我到目前为止所做的一切都是这样的:

Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
Run Code Online (Sandbox Code Playgroud)

然而,它使用双线性滤波器,输出质量很差.特别是如果你想保留细节(如细线或可读文本).

有许多优秀的Java库,例如这里讨论的: Java - 调整图像大小而不会降低质量

但是它总是依赖于Java awt类java.awt.image.BufferedImage,所以它不能在Android中使用.

有没有办法如何更改Bitmap.createScaledBitmap()方法或某些库中的默认(双线性)过滤器,如Morten Nobel的lib,它能够与android.graphics.Bitmap类一起工作(或者有一些原始表示,如评论中指出的@Tron)?

android bitmap bicubic image-resizing lanczos

20
推荐指数
2
解决办法
4374
查看次数

如何获得高质量的缩略图

我正在尝试使用Java和Scalr 3.2创建此图像的高质量缩略图

全尺寸图像

这是相关的源代码,其中THUMB_WIDTH = 77THUMB_HEIGHT = 57

BufferedImage srcImg = ImageIO.read(new File(sourceFile)); 
BufferedImage dstImg = Scalr.resize(srcImg, Scalr.Method.QUALITY, 
    THUMB_WIDTH, THUMB_HEIGHT); 
ImageIO.write(dstImg, format, new File(destFile));
Run Code Online (Sandbox Code Playgroud)

如果我使用format = "png",结果如下:

png缩略图

如果我使用format = "jpg",结果如下:

jpg缩略图

通过imagemagick识别,我发现JPEG的质量保存为75,完全不足以创建美观的缩略图.PNG对我来说也不好看.

以下是原始文件的标识输出和两个缩略图:

$ identify 42486_1.jpg 42486_s1.jpg 42486_s1.png 
42486_1.jpg JPEG 580x435 580x435+0+0 8-bit DirectClass 50.6KB 0.000u 0:00.000
42486_s1.jpg[1] JPEG 77x58 77x58+0+0 8-bit DirectClass 2.22KB 0.000u 0:00.000
42486_s1.png[2] PNG 77x58 77x58+0+0 8-bit DirectClass 12.2KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

问题

  • 如何提高生成的缩略图的质量?
  • 如何保存质量更高的JPEG?我想尝试更高的质量并比较结果.我在JavaDoc for ImageIO.write中找不到任何东西. …

java java-2d image-resizing scalr

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

如何在java中调整图像大小?

您好我有QR码图像,我想调整大小,当我尝试使用此代码将其调整为小图像时,我总是得到一个blury图像,当我扫描它时QR码不再有效,但是当我使用相同的代码调整大尺寸图像时,它工作正常:

public BufferedImage getScaledInstance(BufferedImage img,
                                   int targetWidth,
                                   int targetHeight,
                                   Object hint,
                                   boolean higherQuality)
{
int type = (img.getTransparency() == Transparency.OPAQUE) ?
    BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage ret = (BufferedImage)img;
int w, h;
if (higherQuality) {
    // Use multi-step technique: start with original size, then
    // scale down in multiple passes with drawImage()
    // until the target size is reached
    w = img.getWidth();
    h = img.getHeight();
} else {
    // Use one-step technique: scale directly from original
    // size to target size …
Run Code Online (Sandbox Code Playgroud)

java qr-code image

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

图像调整大小质量(Java)

我有一个开源应用程序,可以将照片上传到Facebook.为了节省带宽,照片会在上传前自动调整大小(Facebook规定了最大大小限制).有些人抱怨照片质量,事实上你可以看到差异(对于一些演示图像,请参阅此问题).

所以我的问题是,在不降低质量的情况下缩小Java中的图像(即照片)的"最佳"方法是什么,或者至少在质量损失/伪影最小的情况下?

您可以在此处查看我当前的代码(通过此页面调整代码大小).

java jpeg resize photo image

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

重新调整图像大小而不会降低质量

我用这个代码调整了两个因素的图像大小.它有效,但调整大小后图像质量非常糟糕!你能帮助我吗?

这是代码

public class ImageTest {

private static final int factor1 = 3;
private static final int factor2 = 4;
public static void main(String [] args){

    JFileChooser cs = new JFileChooser();
    cs.setFileSelectionMode(cs.DIRECTORIES_ONLY);
    int i = cs.showOpenDialog(null);
    if(i==cs.APPROVE_OPTION){
        File f = cs.getSelectedFile();
        File[] ff = f.listFiles();
        for(int j=0;j<ff.length;j++){
            String end = ff[j].getName().substring(ff[j].getName().indexOf(".")+1);
            System.out.println(end);
            try{
                BufferedImage originalImage = ImageIO.read(ff[j]);
                int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
                BufferedImage resizeImageJpg = resizeImageWithHint(originalImage, type);
                ImageIO.write(resizeImageJpg, end, new File("pr/"+ff[j].getName()));
            }catch(IOException e){
                e.printStackTrace();
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage resize

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

如何在java中调整缓存的图像n graphics 2d?

int width = 175;
Graphics2D gb = (Graphics2D) g;

        bufferedimage = (BufferedImage) createImage(width, width);

        Graphics2D graphics = bufferedimage.createGraphics();
        graphics.setColor(/*this.getBackground()*/Color.red);
        graphics.fillRect(0, 0, width, width);
Run Code Online (Sandbox Code Playgroud)

嗨,我有缓冲大尺寸...我必须调整缓冲图像... PLZ你能帮助我吗?

java bufferedimage image

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

Java 2D Image调整大小忽略双三次/双线性插值渲染提示(OS X + linux)

我正在尝试使用Image Voodoo插件在JRuby/Rails应用程序中为上传的图像创建缩略图 - 问题是调整大小的缩略图看起来像......屁股.

似乎生成缩略图的代码绝对正确地将插值渲染提示设置为"bicubic",但是它并没有在我们的开发环境(OS X)或生产Web服务器(Linux)上表现出来. .

我已经提取出代码来生成缩略图,将其重写为直接的Java应用程序(即从main()方法启动),插值呈现提示明确设置为"bicubic",并且已经复制了(缺少)双三次和双线性调整大小.

正如在OS X和Linux上所预期的那样,拇指缩略是丑陋且像素化的,但在Windows上,它使用双三次插值很好地调整了图像的大小.

是否有任何JVM环境设置和/或其他库,我缺少使其工作?对于这个,我正在做很多撞墙的事.

java 2d resize image bicubic

4
推荐指数
1
解决办法
4173
查看次数

如何在不损失质量的情况下使用java调整图像大小?

我的要求是:"如何在不失去挥杆质量的情况下调整图像大小".

我正在使用缩放器组件,标签,面板.我正在使用调整大小的概念此时图像模糊并失去质量.那么你是否知道"如何在不失去使用摇摆概念的质量的情况下调整图像大小?".发给我相关信息或代码.

谢谢你,GaneshKumar.

java swing image-processing

2
推荐指数
1
解决办法
4672
查看次数