读取远程图片到服务器修正版

    技术2025-09-23  45

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><%@ page contentType="text/html; charset=UTF-8" %><%@ page language="java" %><%@ page import= "javax.sql.DataSource "%> <%@ page import="java.sql.*" %><%@ page import="java.util.*" %><%@ page import="java.util.regex.Matcher" %><%@ page import="java.util.regex.Pattern" %><%@ page language="java" %><%@ page import= "java.io.* "%> <%@ page import= "java.net.* "%> <%@ page import= "javax.naming.* "%> <%@ page import= "javax.sql.DataSource "%> <%@ page import="java.sql.*" %><%@ page import="java.util.Date" %><%@ page

    import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*,cn.oof.da

    tabase.*,cn.oof.house.*"%><%@ page import="javax.imageio.*" %><%@ page import="java.net.URL" %><%@ page import="java.net.URLConnection.*"%><%@ page import="java.io.IOException.*"%><%  String   s="<IMG src='http://avatar.csdn.net/4/C/8/1_faleshi.jpg' width>66600<IMG 

    src='http://avatar.csdn.net/4/C/8/1_faleshi.jpg' />11";   String ss=s;    String  regex="src=/"?(.*?)(/"|>|//s+)";   int width=0;   int height=0;  Pattern p = Pattern.compile(regex);   Matcher m = p.matcher(s);   while (m.find()) { //循环取路径开始  String temp =m.group();  String temp1=temp.substring(5,temp.length()-2);       java.net.URL url = new URL(temp1);     Image src = javax.imageio.ImageIO.read(url);     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();   long len = urlConnection.getContentLength();   BufferedImage bi = null;    bi = javax.imageio.ImageIO.read(url);   int[] a = new int[2];    if(bi!=null){   a[0]= bi.getWidth();    a[1] = bi.getHeight(); //获得 高度    width=a[0];   height=a[1];     if(a[0]>500){width=500;}     if(a[1]>500){height=500;}   }   long size=0;   if(len>0){   size=len/1024;   }   if(size>0)   {  String newurl="";  String largepic="";     //更改文件名,取得当前上传时间的毫秒数值     Calendar calendar = Calendar.getInstance();     String filename = String.valueOf(calendar.getTimeInMillis()); //按日期创建目录  String path=request.getRealPath("/");  Calendar c = Calendar.getInstance();  int year = c.get(Calendar.YEAR);  int month = c.get(Calendar.MONTH)+1;//计算机的月份从0开始,所以要加上1  int date = c.get(Calendar.DATE);  String dstr = "";  dstr+=year;  dstr+=(month<10?"0":"")+month;  String newdir=path+"/img/"+dstr;  largepic="/img/"+dstr+"/"+filename+".jpg";  newurl=newdir+"/"+filename+".jpg";  java.io.File dir= new java.io.File(newdir);  if(!dir.exists())  {  dir.mkdir();  }     float tagsize=200;     int old_w=width;                                      //得到源图宽     int old_h=height;        int new_w=0;     int new_h=0;                             //得到源图长     int tempsize;     float tempdouble;      if(old_w>old_h){      tempdouble=old_w/tagsize;     }else{      tempdouble=old_h/tagsize;     }     new_w=Math.round(old_w/tempdouble);     new_h=Math.round(old_h/tempdouble);//计算新图长宽     BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);     tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);        //绘制缩小后的图     FileOutputStream newimage=new FileOutputStream(newurl);           //输出到文件流     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);            encoder.encode(tag);                                                //近JPEG编码      newimage.close();      ss=ss.replace(temp1,largepic);     }  }   //循环取路径结束out.print(ss);%>

    最新回复(0)