谁帮我看一下,以下的代码!然后回答是出在哪里。

ILToJava 2005-03-30 04:55:51
-------test.jsp-----

<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import=" java.io.*" %>
<%@ page import=" java.util.*" %>
<%@ page import =" com.sun.image.codec.jpeg.*" %>
<%@ page import=" java.awt.image.*" %>
<%@ page import=" java.awt.*" %>
<%@ page import =" javax.swing.ImageIcon" %>
<%
String imageurl="f://1122425546.jpg";
String on = (String)request.getParameter("on");

if(on != null)
{
out.println("----正生成-----");
try
{

ImageIcon imgIcon = new ImageIcon(imageurl);
Image imageOriginal = imgIcon.getImage();
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
BufferedImage buffImg = new BufferedImage(widthOriginal, heightOriginal,
BufferedImage.TYPE_INT_RGB);
Graphics g = buffImg.createGraphics();
//旋转180度
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, 0,
heightOriginal, widthOriginal, 0, null);
g.dispose();

FileOutputStream fos = new FileOutputStream(imageurl);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(buffImg);
bos.flush();
bos.close();

}
catch (Exception e) {
e.printStackTrace();
}
}

%>
<html>
<head>
<title>图像旋转</title>
</head>
<body bgcolor="#DDDDDD">
<form method="post" name=test1 action="">
<table width="100%" height="100%" border="0">
<tr>
<td height="40" align="left" ><div align="left" id="msg"></div>
旋转:
<select id="mode1" name="mode1" size="1" >
<option value="0" selected>旋转180</option>

</select>     <input name="appbtn" type="submit" class="btn" value=" 确 定 " ></td>
</tr>
<tr>
<td valign="middle"></td>
</tr>
</table>
<input type=hidden name="imageurl" value="<%=imageurl%>">
<input type="hidden" name="on" value="on">
</form>
</body>
</html>


是这样的,以上的代码是每提交确定一次,就对一张相片进行旋转180度
但是,我第一次提交就可以转180度。然后接下来提交就不行。
(不要怀疑编辑图片代码错。因为我用这段代码放在类里。
然后运行类,完全没问题。每运行一次类,就旋转180度)


并且还有一个怪的现象。就是第一次提交旋转180度之后,我把这张相片删除掉。
奇怪的是,第二次提交的时候,根本不会在new ImageIcon(imageurl)的时候出错!
并且又生成了一张。

是不是上一次的图片流,还在缓存保存起来了啊!!!!
真是怪事。

大家运行一下,试试看。我用的是用weblogic
...全文
212 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mydeman 2005-04-08
  • 打赏
  • 举报
回复
在你使用的drawImage方法中一共有10个参数,其中中间的8个数字,表示了4个点坐标值,前两个是源图的点,后两个是目标的坐标。在这个程序中,旋转时,例如(800,600)旋转到了(0,0),但是这个坐标值还是没有变化,依然是(800,600),只不过它现在在(0,0)点的位置。所以再次旋转时就要把坐标恢复,即(0,0)、(800,600)都回到原来的位置。
mydeman 2005-04-08
  • 打赏
  • 举报
回复
下面是修改后的代码:
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import=" java.io.*" %>
<%@ page import=" java.util.*" %>
<%@ page import =" com.sun.image.codec.jpeg.*" %>
<%@ page import=" java.awt.image.*" %>
<%@ page import=" java.awt.*" %>
<%@ page import =" javax.swing.ImageIcon" %>
<%
String imageurl="f://1.jpg";
String on = (String)request.getParameter("on");
String rotateNum = request.getParameter("rotateNum");
if (rotateNum == null || rotateNum.equals("null")) {
rotateNum = "1";
}

if(on != null)
{
out.println("----正生成-----");
try
{

ImageIcon imgIcon = new ImageIcon(imageurl);
Image imageOriginal = imgIcon.getImage();
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
System.out.println("width=" + widthOriginal + ",heightOriginal=" + heightOriginal);
BufferedImage buffImg = new BufferedImage(widthOriginal, heightOriginal,
BufferedImage.TYPE_INT_RGB);
Graphics g = buffImg.createGraphics();
int num = Integer.parseInt(rotateNum);
//旋转180度
if ( num % 2 == 1) {
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, 0,
heightOriginal, widthOriginal, 0, null);
} else if (num % 2 == 0) {
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, 0,
0, widthOriginal, heightOriginal, null);
}
g.dispose();

FileOutputStream fos = new FileOutputStream(imageurl);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(buffImg);
bos.flush();
bos.close();

rotateNum = String.valueOf(num + 1);
System.out.println("rotateNum == " + rotateNum);
}
catch (Exception e) {
e.printStackTrace();
}
}

%>
<html>
<head>
<title>图像旋转</title>
</head>
<body bgcolor="#DDDDDD">
<form method="post" name=test1 action="">
<input type="hidden" name="rotateNum" value="<%=rotateNum%>">
<table width="100%" height="100%" border="0">
<tr>
<td><img src="f:/1.jpg"></td>
</tr>
<tr>
<td height="40" align="left" ><div align="left" id="msg"></div>
旋转:
<select id="mode1" name="mode1" size="1" >
<option value="0" selected>旋转180</option>

</select>     <input name="appbtn" type="submit" class="btn" value=" 确 定 " ></td>
</tr>
<tr>
<td valign="middle"></td>
</tr>
</table>
<input type=hidden name="imageurl" value="<%=imageurl%>">
<input type="hidden" name="on" value="on">
</form>
</body>
</html>
coffeemilk 2005-04-04
  • 打赏
  • 举报
回复
up..........只要是你的
ILToJava 2005-04-04
  • 打赏
  • 举报
回复
自己也up....
ILToJava 2005-04-01
  • 打赏
  • 举报
回复
to mydeman(漫步者) :
真的太感激你了,其实我知道你的意思。
我对图片旋转的这个方法的参考研究太久了
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, 0,
heightOriginal, widthOriginal, 0, null);
我都不知道,到底各个参数是什么意思。

你能不能给我一代完整的旋转代码,并且告诉我各个参数是什么意思
等待之中......
mydeman 2005-04-01
  • 打赏
  • 举报
回复
to jianghuxing(回头看看原来我一无所有),说得对,你没有保存上一次的结果,你可以在页面设置一个隐藏域保存已经旋转的次数,每次这个次数加一,参考代码:
<input type="hidden" name="rotateNum" value="<%=rotateNum%>">

<%
String rotateNum = request.getParameter("rotateNum");
if (rotateNum != null) {
rotateNum = String.valueOf(Integer.parseInt(rotateNum) + 1);
} else {
rotateNum = "1";
}

//然后旋转的度数=rotateNum * 180
//也可以进行判断,当等于360时不进行旋转等
%>
ILToJava 2005-04-01
  • 打赏
  • 举报
回复
看来,又没人愿意帮忙了。。。
ILToJava 2005-03-31
  • 打赏
  • 举报
回复
to 问题是哪个方法,,,我急着交差,已经搞了很久没搞定了。。。

叹。。
jianghuxing 2005-03-31
  • 打赏
  • 举报
回复
有些问题如果自已解决了,会很开心的,
呵呵,不难,你可以解决的。看看它的方法就明白了。
ILToJava 2005-03-31
  • 打赏
  • 举报
回复
to jianghuxing(回头看看原来我一无所有):
总算是知道原因了,要不然特郁闷,怎么会这样子。
不过,你说的把上次结果保存起来加1,这段代码如何写啊。
我对编辑图片这块也是刚用。
能不能给我一段代码,我将是感激不尽啊
jianghuxing 2005-03-30
  • 打赏
  • 举报
回复
你没有保存上一次旋转后的位置,这样的话每次都是初始位置,其实他转了,只是起点是同一点。

把上次的结果也保存起来,每次+1。这样第二次就转2*180

hojay2001 2005-03-30
  • 打赏
  • 举报
回复
UP
ILToJava 2005-03-30
  • 打赏
  • 举报
回复
自己做沙发。。。。。记有空的,热于帮人的,帮我运行一下这段程序。

看看是不是服务器中有什么缓存的问题啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧