public class GameBaikeBackgroundInfoQ
TAction
extends BaseAction{
privatestatic final Log log =LogFactory.getLog(GameBaikeBackgroundInfoQ
TAction.class);
publicActionForward saveBaikeBackground(ActionMapping mapping, ActionFormform, HttpServletRequest request,HttpServletResponseresponse){
//。。。。。。
//从string中提取图片 start chc add 2011//02/17
//保存到本地,并用本地图片地址替换网络图片地址
String reg ="<img.+?src=["|\'](.+?)["|\']";
Stringbackground =gameBaikeBackgroundInfo.getBackGround().replaceAll("\r\n","").replaceAll("\n", "");//游戏介绍(背景)
Patternpattern = Pattern.compile(reg);
Matchermatcher = pattern.matcher(background);
List<String> list = newArrayList<String>();//放图片的src地址
Map<String,String> imgMap = newHashMap<String,String>();//key:网络图片地址,value:本地图片地址
Set<String> imgSrcSet = newHashSet<String>();
while(matcher.find()){
StringfullFileName = matcher.group(1);
System.out.println("==============="+fullFileName);
imgMap.put(fullFileName,"<#srchttp_"+fullFileName+"#>");
list.add(fullFileName);
}
for(inti=0;i<list.size();i++){
imgSrcSet.add(list.get(i));
}
for(Stringstr:imgSrcSet){
Imageimg=ImageIO.read(new URL(str));
StringsrcName = str.substring(str.lastIndexOf(".")+1);//文件扩展名
StringwebPath =GlobalParameter.getValue("gameData")+"/"+gameInfo.getGameCode()+"/background_img";//相对路径
StringlogoFileDir =GlobalParameter.getValue("basePath")+webPath;//绝对路径
StringlogoFileName = UUID.randomUUID().toString()+"."+srcName;//文件名
FilefileDirs = new File(logoFileDir);//创建目录
if (!fileDirs.isDirectory() ){
fileDirs.mkdirs();
}
//img 转成BufferedImage start
BufferedImage bi = newBufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2DbiContext = bi.createGraphics();
biContext.drawImage(img,0,0,null);
//img 转成BufferedImage end
PhotoUtil.createSmallPicture(bi, newFile(logoFileDir+"/"+logoFileName), img.getWidth(null),img.getHeight(null));
imgMap.put(str,GlobalParameter.getValue("qturl")+webPath+"/"+logoFileName);
}
for(inti=0;i<list.size();i++){
background =background.replaceAll(list.get(i), imgMap.get(list.get(i)));
}
gameBaikeBackgroundInfo.setBackGround(background);
HttpSessionsession = request.getSession();
session.setAttribute("newReason",gameBaikeBackgroundInfo.getReason().replaceAll("<","<").replaceAll(">",">"));
session.setAttribute("newRefUrl",gameBaikeBackgroundInfo.getRefURL());
session.setAttribute("newBackground", background);
//end
2011/01/09 chc add
theGameBaikeBackgroundIn
foMgrInf.insertGameBaikeBackgroun
dInfo(gameBaikeBackgroundInfo);
}
}
public class PhotoUtil {
privatestatic org.apache.log4j.Logger logger =org.apache.log4j.Logger.getLogger(PhotoUtil.class.getName());
///
//功能的简述:缩图处理.
// @paramsrcPicFile 原图文件
// @paramdestPicFile 缩图处理后的图片文件
//@paramminiWidth
缩略图的宽度限制
// @paramminiHeight
缩略图的高度限制
//@return
返回是否成功.
//
//public static boolean createSmallPicture(File srcPicFile, FiledestPicFile,int miniWidth,int miniHeight) {
publicstatic boolean createSmallPicture(BufferedImage srcBi, FiledestPicFile,int miniWidth,int miniHeight) {
try {
//
BufferedImage srcBi = ImageIO.read(srcPicFile);
int srcH = srcBi.getHeight();
int srcW = srcBi.getWidth();
double scale = (srcW / ((double) miniWidth)) > (srcH/ ((double) miniHeight)) ? (srcW / ((double) miniWidth)) : (srcH /((double) miniHeight));
int destW = (int) (srcW / scale);
int destH = (int) (srcH / scale);
if ((destW > srcW) || (destH > srcH)){
destW = srcW;
destH = srcH;
}
BufferedImage newImg = new BufferedImage(srcW, srcH,BufferedImage.TYPE_INT_RGB);
newImg.createGraphics().drawImage(srcBi, 0, 0, srcW, srcH,null);
Iterator<ImageWriter> iter =ImageIO.getImageWritersByFormatN
ame("jpg");
if (iter.hasNext()) {
//
writer = iter.next();
} else {
throw new IOException("no ImageWriter for jepg");
}
InFocusPhoto ifp=new InFocusPhoto();//调用图象缩放方法
BufferedImage tag =ifp.imageZoomOut(newImg,destW,destH);
FileOutputStream out=newFileOutputStream(destPicFile);
//输出到文件流
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.flush();
out.close();
return true;
} catch (IOException e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
return false;
}
}
}
}
public class PhotoUtil {
///
//public static boolean createSmallPicture(File srcPicFile, FiledestPicFile,int miniWidth,int miniHeight) {
//
//
}