标签: javax.imageio

Java - 从图像中获取像素数组

我正在寻找int[][]从a 获取像素数据(在表单中)的最快方法BufferedImage.我的目标是能够(x, y)使用图像来处理图像中的像素int[x][y].我发现的所有方法都没有这样做(大多数都返回int[]s).

java bufferedimage javax.imageio

111
推荐指数
4
解决办法
21万
查看次数

如何使用java获取图像的高度和宽度?

除了使用ImageIO.read获取图像高度和宽度之外还有其他方法吗?

因为我遇到了锁定线程的问题.

at com.sun.medialib.codec.jpeg.Decoder.njpeg_decode(Native Method)      
at com.sun.medialib.codec.jpeg.Decoder.decode(Decoder.java:87)      
at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.decode(CLibJPEGImageReader.java:73)     
 - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)      
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.getImage(CLibImageReader.java:320)    
 - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)     
 at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.read(CLibImageReader.java:384)   
 - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)      
at javax.imageio.ImageIO.read(ImageIO.java:1400)      
at javax.imageio.ImageIO.read(ImageIO.java:1322)
Run Code Online (Sandbox Code Playgroud)

此错误仅发生在Sun应用服务器上,因此我怀疑它是Sun错误.

java javax.imageio

98
推荐指数
8
解决办法
18万
查看次数

Java/ImageIO获取图像尺寸而不读取整个文件?

有没有办法在不读取整个文件的情况下获取图像的尺寸?

URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
Run Code Online (Sandbox Code Playgroud)

java image dimensions javax.imageio

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

问题设置图像的exif数据

我在iOS 4.1中使用新的ImageIO框架.我使用以下代码成功检索exif元数据:

CFDictionaryRef metadataDict = CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary , NULL);
Run Code Online (Sandbox Code Playgroud)

阅读它,它似乎是有效的.保存图像有效,但图像中从不存在任何exif数据.

    CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((CFURLRef) docurl, kUTTypeJPEG, 1, NULL);

    // Add the image to the destination using previously saved options. 
    CGImageDestinationAddImage(myImageDest, iref, NULL);

    //add back exif
    NSDictionary *props = [NSDictionary dictionaryWithObjectsAndKeys:
                            [NSNumber numberWithFloat:.1], kCGImageDestinationLossyCompressionQuality,
                           metadataDict, kCGImagePropertyExifDictionary, //the exif metadata
                                                        nil];

                          //kCGImagePropertyExifAuxDictionary

    CGImageDestinationSetProperties(myImageDest, (CFDictionaryRef) props);

    // Finalize the image destination. 
    bool status = CGImageDestinationFinalize(myImageDest);
Run Code Online (Sandbox Code Playgroud)

iphone macos exif core-graphics javax.imageio

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

ImageIO无法写入JPEG文件

我有一个BufferedImage我正在尝试写一个jpeg文件,但是我的Java程序抛出异常.我能够成功地将相同的缓冲区保存到gif和png.我曾尝试在Google上寻找解决方案,但无济于事.

码:

   File outputfile = new File("tiles/" + row + ":" + col + ".jpg");
   try {
       ImageIO.write(mapBufferTiles[row][col], "jpg", outputfile);
   } catch (IOException e) {
        outputfile.delete();
        throw new RuntimeException(e);
   }
Run Code Online (Sandbox Code Playgroud)

例外:

 Exception in thread "main" java.lang.RuntimeException: javax.imageio.IIOException: Invalid argument to native writeImage
 at MapServer.initMapBuffer(MapServer.java:90)
 at MapServer.<init>(MapServer.java:24)
 at MapServer.main(MapServer.java:118)
 Caused by: javax.imageio.IIOException: Invalid argument to native writeImage
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method)
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1055)
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:357)
 at javax.imageio.ImageWriter.write(ImageWriter.java:615)
 at javax.imageio.ImageIO.doWrite(ImageIO.java:1602)
 at javax.imageio.ImageIO.write(ImageIO.java:1526)
 at MapServer.initMapBuffer(MapServer.java:87)
 ... 2 more
Run Code Online (Sandbox Code Playgroud)

java jpeg image javax.imageio

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

如何将PNG图像从Jersey REST服务方法返回到浏览器

我有一个运行Jersey REST资源的Web服务器,我想知道如何获取浏览器img标签的image/png参考; 提交表单或获得Ajax响应后.用于添加图形的图像处理代码正常工作,只需要以某种方式返回它.

码:

@POST
@Path("{fullsize}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("image/png")
// Would need to replace void
public void getFullImage(@FormDataParam("photo") InputStream imageIS,
                         @FormDataParam("submit") String extra) {

      BufferedImage image = ImageIO.read(imageIS);

      // .... image processing
      //.... image processing

      return ImageIO.  ..  ?

}
Run Code Online (Sandbox Code Playgroud)

干杯

java image glassfish jersey javax.imageio

48
推荐指数
4
解决办法
10万
查看次数

无法使用ImageIO.read读取JPEG图像(文件文件)

我在使用ImageIO.read(文件文件)读取这个JPEG文件时遇到问题 - 它会抛出一条带有"Unsupported Image Type"消息的异常.

我尝试过其他JPEG图像,它们似乎工作正常.

我能够发现的唯一区别是这个文件似乎包含一个缩略图 - 已知会导致ImageIO.read()出现问题吗?

麻烦的形象

编辑:

添加了生成的图像:

奇怪的颜色

java jpeg image javax.imageio

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

如何从BufferedImage获取InputStream?

如何从BufferedImage对象获取InputStream?我试过这个,但ImageIO.createImageInputStream()总是返回NULL

BufferedImage bigImage = GraphicsUtilities.createThumbnail(ImageIO.read(file), 300);
ImageInputStream bigInputStream = ImageIO.createImageInputStream(bigImage);
Run Code Online (Sandbox Code Playgroud)

因为我可以成功地将bigImage绘制JPanel,所以正确生成了图像缩略图.

谢谢.

java image-processing javax.imageio

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

使用Java中的ImageIO设置jpg压缩级别

我正在使用javax.imageio.ImageIO保存BufferedImage为jpeg文件.特别是,我创建了以下Java函数:

public static void getScreenShot(BufferedImage capture, Path folder, String filename) {
        try {
            ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg"));
        } catch (AWTException | IOException ex) {
            Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex);
        }
}
Run Code Online (Sandbox Code Playgroud)

同样任何图像处理软件,我希望改变jpeg文件的压缩级别.但是,我正在寻找似乎缺少的这个选项ImageIO.

我可以设置压缩级别以及如何设置?

java jpeg image-compression javax.imageio

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

ImageIO读取的RGB值略微不同于其他方法

我发现在使用Java(实际上是绘制.NET)时,我使用的不同是RGB,而不是使用ImageMagick,Gimp,Python和Octave.最后4个都同意彼此,所以我假设是正确的.

对于这些示例,我正在使用此测试图像: http://farm3.static.flickr.com/2811/9177301733_9836174725_o.jpg

测试像素 x=4144 y=2768

               R    G    B
Java        = (125, 107, 69)
Paint.NET   = (125, 107, 69)
ImageMagick = (128, 106, 67)
Python      = (128, 106, 67)
Octave      = (128, 106, 67)
Gimp        = (128, 106, 67)
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

这是使用imagemagick的快速测试:

convert image.jpg -crop 1x1+4144+2768 -depth 8 txt:
Run Code Online (Sandbox Code Playgroud)

输出:

# ImageMagick pixel enumeration: 1,1,65535,srgb
0,0: (32896,27242,17219)  #806A43  srgb(128,106,67)
Run Code Online (Sandbox Code Playgroud)

这里有一些java和python代码也演示了这个问题:

import org.apache.commons.io.FileUtils;
import org.junit.Test;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

public class ImageIOTest …
Run Code Online (Sandbox Code Playgroud)

java rgb jpeg javax.imageio

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