问题描述如下:
init:
deps-jar:
compile:
run:
Exception in thread "main" java.lang.NullPointerException
at sun.awt.image.codec.JPEGImageEncoderImpl.getDefaultJPEGEncodeParam(JPEGImageEncoderImpl.java:174)
at sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:205)
at waterset.P4.createJpg(P4.java:26)
at waterset.Main.main(Main.java:77)
Java Result: 1
成功生成(总时间:1 秒)
源程序如下:
package waterset;
import java.awt.*;
import java.awt.image.*;
import java.awt.AlphaComposite.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
/**
*
* @author Owner
*/
public class P4 {
BufferedImage image; public void createJpg(String path) {
try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
} catch(FileNotFoundException fnfe) {
System.out.println(fnfe);
} catch(IOException ioe) {
System.out.println(ioe);
}
}
public void overlapPictures(BufferedImage p1, BufferedImage p2,int startOverlap)
{ int amountOverlap = p1.getWidth() - startOverlap;
Graphics g =p1.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
g2.drawImage(p2,0,0,startOverlap,p1.getHeight(),null);
g2.drawImage(p1,startOverlap,0,p1.getWidth(),p1.getHeight(),null);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f));
g2.drawImage(p2,startOverlap,0,p1.getWidth(),p2.getHeight(),0,0,amountOverlap,p2.getHeight(),null);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
g2.drawImage(p2,p1.getWidth(),0,p2.getWidth()+startOverlap,p2.getHeight(),amountOverlap,0,p2.getWidth(),p2.getHeight(),null);
}}
主类:
public class Main {
public static void main(String[] args) {
File file1=new File("d:\\1A.jpg");
File file2=new File("d:\\1B.jpg");
P4 p1=new P4();
P4 p2=new P4();
P4 p3=new P4();
try {
p1.image = ImageIO.read(file1);
p2.image = ImageIO.read(file2);
} catch(IOException ioe) {
System.out.println(ioe);
}
p3.overlapPictures(p1.image,p2.image,0);
p3.createJpg("d:\\waterset.jpg");
}}
请大家帮我看看怎么回事啊~~~~
init:
deps-jar:
compile:
run:
Exception in thread "main" java.lang.NullPointerException
at sun.awt.image.codec.JPEGImageEncoderImpl.getDefaultJPEGEncodeParam(JPEGImageEncoderImpl.java:174)
at sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:205)
at waterset.P4.createJpg(P4.java:26)
at waterset.Main.main(Main.java:77)
Java Result: 1
成功生成(总时间:1 秒)
源程序如下:
package waterset;
import java.awt.*;
import java.awt.image.*;
import java.awt.AlphaComposite.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
/**
*
* @author Owner
*/
public class P4 {
BufferedImage image; public void createJpg(String path) {
try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
} catch(FileNotFoundException fnfe) {
System.out.println(fnfe);
} catch(IOException ioe) {
System.out.println(ioe);
}
}
public void overlapPictures(BufferedImage p1, BufferedImage p2,int startOverlap)
{ int amountOverlap = p1.getWidth() - startOverlap;
Graphics g =p1.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
g2.drawImage(p2,0,0,startOverlap,p1.getHeight(),null);
g2.drawImage(p1,startOverlap,0,p1.getWidth(),p1.getHeight(),null);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f));
g2.drawImage(p2,startOverlap,0,p1.getWidth(),p2.getHeight(),0,0,amountOverlap,p2.getHeight(),null);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
g2.drawImage(p2,p1.getWidth(),0,p2.getWidth()+startOverlap,p2.getHeight(),amountOverlap,0,p2.getWidth(),p2.getHeight(),null);
}}
主类:
public class Main {
public static void main(String[] args) {
File file1=new File("d:\\1A.jpg");
File file2=new File("d:\\1B.jpg");
P4 p1=new P4();
P4 p2=new P4();
P4 p3=new P4();
try {
p1.image = ImageIO.read(file1);
p2.image = ImageIO.read(file2);
} catch(IOException ioe) {
System.out.println(ioe);
}
p3.overlapPictures(p1.image,p2.image,0);
p3.createJpg("d:\\waterset.jpg");
}}
请大家帮我看看怎么回事啊~~~~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货