我使用这个方法将一个png转到 jpeg。 如果source指定的png文件不存在 com.sun.jimi.core.JimiException: No source image set. at com.sun.jimi.core.JimiWriter.putImage(JimiWriter.java:263) at com.sun.jimi.core.JimiWriter.putImage(JimiWriter.java:238)
程序是这样的,输入一个图片ID号,从数据库中提取数据保存成.TIF文件并存在D:\java_script\OA\imageFiles\目录下,然后把该.tif图片转成.jpg用于在页面显示。源代码: public void GetImgByteById(String picID) throws SQLException, IOException { FileOutputStream fos = null; String direction = "D:\\java_script\\OA\\imageFiles\\"; String fileName = picID + ".tif"; String filePath = direction + fileName; InputStream inStream = null; byte[] Buffer = new byte[4096]; ResultSet rs = null; pictureOperate.pictureTypeConvert pptc = new pictureTypeConvert();
try { databaseConnection dbc = new databaseConnection(); String sqlStr = "select pic_pic from sys_data_pic where pic_id=" + picID; if (dbc.connection()) { rs = dbc.selection(sqlStr); } if (rs.next()) { File file = new File(filePath); if (!file.exists()) { file.createNewFile(); } fos = new FileOutputStream(file); java.sql.Blob blob = rs.getBlob("pic_pic"); inStream = blob.getBinaryStream(); int size = 0; while ((size = inStream.read(Buffer)) != -1) { fos.write(Buffer, 0, size); } fos.close(); pptc.convertToJPG(file.getName(), direction + picID, 75); } } catch (Exception e) { System.out.println("输入文件错误:" + e.getMessage()); } finally { //fos.close(); rs.close(); } }
pptc.convertToJPG(file.getName(), direction + picID, 75);问题应该在这里new File("/tmp/maven.txt").getName() ; "maven.txt" new File("/tmp/maven.txt").getPath() ; "/tmp/maven.txt"
就改为:pptc.convertToJPG(filePath, direction + picID, 75); //filePaht="D:\\java_script\\OA\\imageFiles\\593419.TIF" 也不行呀,活见鬼了。
还有没有高手,困扰了很久: 源码: import com.sun.jimi.core.*; import java.awt.image.*; import com.sun.jimi.core.JimiException.*; import com.sun.jimi.core.options.JPGOptions; import com.sun.jimi.core.options.FormatOptionSet; import java.io.File;public class convertToJPG { public void convertToJPG(String source, String dest, int quality) throws JimiException { if (source.trim().equals("") || source == null || dest.trim().equals("") || dest == null) { System.out.println("Error:Not to found the file "); } else { dest += ".jpg"; } try { JPGOptions options = new JPGOptions(); options.setQuality(quality); ImageProducer image = Jimi.getImageProducer(source); JimiWriter writer = Jimi.createJimiWriter(dest); writer.setSource(image); writer.setOptions(options); writer.putImage(dest);
如果source指定的png文件不存在
com.sun.jimi.core.JimiException: No source image set.
at com.sun.jimi.core.JimiWriter.putImage(JimiWriter.java:263)
at com.sun.jimi.core.JimiWriter.putImage(JimiWriter.java:238)
public void GetImgByteById(String picID) throws SQLException, IOException {
FileOutputStream fos = null;
String direction = "D:\\java_script\\OA\\imageFiles\\";
String fileName = picID + ".tif";
String filePath = direction + fileName;
InputStream inStream = null;
byte[] Buffer = new byte[4096];
ResultSet rs = null;
pictureOperate.pictureTypeConvert pptc = new pictureTypeConvert();
try {
databaseConnection dbc = new databaseConnection();
String sqlStr = "select pic_pic from sys_data_pic where pic_id=" + picID;
if (dbc.connection()) {
rs = dbc.selection(sqlStr);
}
if (rs.next()) {
File file = new File(filePath);
if (!file.exists()) {
file.createNewFile();
}
fos = new FileOutputStream(file);
java.sql.Blob blob = rs.getBlob("pic_pic");
inStream = blob.getBinaryStream();
int size = 0;
while ((size = inStream.read(Buffer)) != -1) {
fos.write(Buffer, 0, size);
}
fos.close();
pptc.convertToJPG(file.getName(), direction + picID, 75); }
} catch (Exception e) {
System.out.println("输入文件错误:" + e.getMessage());
} finally {
//fos.close();
rs.close();
}
}
new File("/tmp/maven.txt").getPath() ; "/tmp/maven.txt"
源码:
import com.sun.jimi.core.*;
import java.awt.image.*;
import com.sun.jimi.core.JimiException.*;
import com.sun.jimi.core.options.JPGOptions;
import com.sun.jimi.core.options.FormatOptionSet;
import java.io.File;public class convertToJPG
{
public void convertToJPG(String source, String dest, int quality) throws JimiException {
if (source.trim().equals("") || source == null || dest.trim().equals("") || dest == null) {
System.out.println("Error:Not to found the file ");
} else {
dest += ".jpg";
}
try {
JPGOptions options = new JPGOptions();
options.setQuality(quality);
ImageProducer image = Jimi.getImageProducer(source);
JimiWriter writer = Jimi.createJimiWriter(dest);
writer.setSource(image);
writer.setOptions(options);
writer.putImage(dest);
} catch (Exception es) {
System.out.println("在原函数中" + es);
}
}
public static void main(String[] args)
{
File files=new File("aa.tif");
convertToJPG jpg=new convertToJPG(); try
{
jpg.convertToJPG(files.getName(),"test",75);
}
catch (Exception es)
{
System.out.println("This error is:"+es);
}
}
}还是报:在原函数中com.sun.jimi.core.JimiException: No source image set.
路径都是对的呀,并且在路径下确实有此aa.tif图片文件。跪求高手指导!!!
只把你想要的拿出来就行啦.