Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java更改JPEG图像DPI_Java_Swing_Jakarta Ee - Fatal编程技术网

如何使用java更改JPEG图像DPI

如何使用java更改JPEG图像DPI,java,swing,jakarta-ee,Java,Swing,Jakarta Ee,有人能帮我吗 我有一些.jpg是从JPanel创建的。不幸的是,它的新闻部是72。有没有一个程序化的方法来改变这些.jpg的DPI? 现在我使用以下代码来更改DPI。但当我尝试构建项目时,它有一些问题 `JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(outfile)); JPEGEncodeParam jpegEncodeParam = jpegEncoder.g

有人能帮我吗

我有一些.jpg是从JPanel创建的。不幸的是,它的新闻部是72。有没有一个程序化的方法来改变这些.jpg的DPI? 现在我使用以下代码来更改DPI。但当我尝试构建项目时,它有一些问题

`JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new   FileOutputStream(outfile));
        JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
        jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        jpegEncodeParam.setXDensity(300);
        jpegEncodeParam.setYDensity(300);
        jpegEncoder.encode(image, jpegEncodeParam);`

提前感谢:)

您可以使用Graphics2D方法(来自java.awt)缩放图像。本教程将对其进行深入解释

这里有一个例子

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.Image;

import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.ImageIcon;

import org.w3c.dom.Element;
import org.w3c.dom.Node;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImageManipulation {

    public static void main(String[] args) throws Exception {
        File infile = new File("/your image.jpg");
        File outfile = new File("/your image.jpg");

        ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
        reader.setInput(new FileImageInputStream(infile), true, false);
        IIOMetadata data = reader.getImageMetadata(0);
        BufferedImage image = reader.read(0);

        int w = 600, h = -1;
         Image rescaled = image.getScaledInstance(w, h, Image.SCALE_AREA_AVERAGING);
         BufferedImage output = toBufferedImage(rescaled, BufferedImage.TYPE_INT_RGB);

        Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0");
        Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
        for (int i = 0; i < jfif.getAttributes().getLength(); i++) {
            Node attribute = jfif.getAttributes().item(i);
            System.out.println(attribute.getNodeName() + "="
                    + attribute.getNodeValue());
        }
        FileOutputStream fos = new FileOutputStream(outfile);
        JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
        JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(output);
        jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        jpegEncodeParam.setXDensity(300);
        jpegEncodeParam.setYDensity(300);
        jpegEncoder.encode(output, jpegEncodeParam);
        fos.close();
        }

      public static BufferedImage toBufferedImage(Image image, int type) {
            int w = image.getWidth(null);
            int h = image.getHeight(null);
            BufferedImage result = new BufferedImage(w, h, type);
            Graphics2D g = result.createGraphics();
            g.drawImage(image, 0, 0, null);
            g.dispose();
            return result;
        }
}
import java.awt.*;
导入java.awt.image.*;
导入java.io.*;
导入java.net。*;
导入javax.imageio.*;
导入java.awt.Graphics;
导入java.awt.image.buffereImage;
导入java.awt.Image;
导入java.io.File;
导入java.io.FileOutputStream;
导入javax.imageio.imageio;
导入javax.imageio.ImageReader;
导入javax.imageio.metadata.iimetadata;
导入javax.imageio.stream.FileImageInputStream;
导入javax.swing.ImageIcon;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入com.sun.image.codec.jpeg.jpeg编解码器;
导入com.sun.image.codec.jpeg.JPEGEncodeParam;
导入com.sun.image.codec.jpeg.jpeg图像编码器;
公共类图像处理{
公共静态void main(字符串[]args)引发异常{
File infle=新文件(“/your image.jpg”);
File outfile=新文件(“/your image.jpg”);
ImageReader=ImageIO.getImageReadersByFormatName(“jpeg”).next();
setInput(新文件ImageInputStream(infle),true,false);
IIOMetadata data=reader.getImageMetadata(0);
BuffereImage image=reader.read(0);
int w=600,h=1;
图像重缩放=Image.getScaledInstance(w,h,Image.SCALE\u面积\u平均值);
BuffereImage输出=toBufferedImage(已重新缩放,BuffereImage.TYPE_INT_RGB);
元素树=(元素)数据.getAsTree(“javax_imageio_jpeg_image_1.0”);
Element jfif=(Element)tree.getElementsByTagName(“app0JFIF”).item(0);
对于(int i=0;i
您可以使用Graphics2D方法(来自java.awt)缩放图像。本教程将对其进行深入解释

这里有一个例子

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.Image;

import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.ImageIcon;

import org.w3c.dom.Element;
import org.w3c.dom.Node;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImageManipulation {

    public static void main(String[] args) throws Exception {
        File infile = new File("/your image.jpg");
        File outfile = new File("/your image.jpg");

        ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
        reader.setInput(new FileImageInputStream(infile), true, false);
        IIOMetadata data = reader.getImageMetadata(0);
        BufferedImage image = reader.read(0);

        int w = 600, h = -1;
         Image rescaled = image.getScaledInstance(w, h, Image.SCALE_AREA_AVERAGING);
         BufferedImage output = toBufferedImage(rescaled, BufferedImage.TYPE_INT_RGB);

        Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0");
        Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
        for (int i = 0; i < jfif.getAttributes().getLength(); i++) {
            Node attribute = jfif.getAttributes().item(i);
            System.out.println(attribute.getNodeName() + "="
                    + attribute.getNodeValue());
        }
        FileOutputStream fos = new FileOutputStream(outfile);
        JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
        JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(output);
        jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        jpegEncodeParam.setXDensity(300);
        jpegEncodeParam.setYDensity(300);
        jpegEncoder.encode(output, jpegEncodeParam);
        fos.close();
        }

      public static BufferedImage toBufferedImage(Image image, int type) {
            int w = image.getWidth(null);
            int h = image.getHeight(null);
            BufferedImage result = new BufferedImage(w, h, type);
            Graphics2D g = result.createGraphics();
            g.drawImage(image, 0, 0, null);
            g.dispose();
            return result;
        }
}
import java.awt.*;
导入java.awt.image.*;
导入java.io.*;
导入java.net。*;
导入javax.imageio.*;
导入java.awt.Graphics;
导入java.awt.image.buffereImage;
导入java.awt.Image;
导入java.io.File;
导入java.io.FileOutputStream;
导入javax.imageio.imageio;
导入javax.imageio.ImageReader;
导入javax.imageio.metadata.iimetadata;
导入javax.imageio.stream.FileImageInputStream;
导入javax.swing.ImageIcon;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入com.sun.image.codec.jpeg.jpeg编解码器;
导入com.sun.image.codec.jpeg.JPEGEncodeParam;
导入com.sun.image.codec.jpeg.jpeg图像编码器;
公共类图像处理{
公共静态void main(字符串[]args)引发异常{
File infle=新文件(“/your image.jpg”);
File outfile=新文件(“/your image.jpg”);
ImageReader=ImageIO.getImageReadersByFormatName(“jpeg”).next();
setInput(新文件ImageInputStream(infle),true,false);
IIOMetadata data=reader.getImageMetadata(0);
BuffereImage image=reader.read(0);
int w=600,h=1;
图像重缩放=Image.getScaledInstance(w,h,Image.SCALE\u面积\u平均值);
BuffereImage输出=toBufferedImage(已重新缩放,BuffereImage.TYPE_INT_RGB);
元素树=(元素)数据.getAsTree(“javax_imageio_jpeg_image_1.0”);
Element jfif=(Element)tree.getElementsByTagName(“app0JFIF”).item(0);
对于(int i=0;i
您可以使用Graphics2D方法(来自java.awt)缩放图像。本教程将对其进行深入解释

这里有一个例子

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.Image;

import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.ImageIcon;

import org.w3c.dom.Element;
import org.w3c.dom.Node;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImageManipulation {

    public static void main(String[] args) throws Exception {
        File infile = new File("/your image.jpg");
        File outfile = new File("/your image.jpg");

        ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
        reader.setInput(new FileImageInputStream(infile), true, false);
        IIOMetadata data = reader.getImageMetadata(0);
        BufferedImage image = reader.read(0);

        int w = 600, h = -1;
         Image rescaled = image.getScaledInstance(w, h, Image.SCALE_AREA_AVERAGING);
         BufferedImage output = toBufferedImage(rescaled, BufferedImage.TYPE_INT_RGB);

        Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0");
        Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
        for (int i = 0; i < jfif.getAttributes().getLength(); i++) {
            Node attribute = jfif.getAttributes().item(i);
            System.out.println(attribute.getNodeName() + "="
                    + attribute.getNodeValue());
        }
        FileOutputStream fos = new FileOutputStream(outfile);
        JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
        JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(output);
        jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        jpegEncodeParam.setXDensity(300);
        jpegEncodeParam.setYDensity(300);
        jpegEncoder.encode(output, jpegEncodeParam);
        fos.close();
        }

      public static BufferedImage toBufferedImage(Image image, int type) {
            int w = image.getWidth(null);
            int h = image.getHeight(null);
            BufferedImage result = new BufferedImage(w, h, type);
            Graphics2D g = result.createGraphics();
            g.drawImage(image, 0, 0, null);
            g.dispose();
            return result;
        }
}
import java.awt.*;
导入java.awt.image.*;
导入java.io.*;
导入java.net。*;
导入javax.imageio.*;
导入java.awt.Graphic