package action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import pojo.SiteUser;
import service.SiteUserService;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
/**
* Created with Inte
* Date: 6/6/12
* Time: 10:13 AM
*/
public class CropAvatarAction extends ActionSupport {
private String x1;
private String y1;
private String width;
private String height;
private String picturepath;
private String picturename;
private SiteUserService siteUserService;
public SiteUserService getSiteUserService() {
return siteUserService;
}
public void setSiteUserService(SiteUserService siteUserService) {
this.siteUserService = siteUserService;
}
public String getPicturename() {
return picturename;
}
public void setPicturename(String picturename) {
this.picturename = picturename;
}
public String getPicturepath() {
return picturepath;
}
public void setPicturepath(String picturepath) {
this.picturepath = picturepath;
}
public String getX1() {
return x1;
}
public void setX1(String x1) {
this.x1 = x1;
}
public String getY1() {
return y1;
}
public void setY1(String y1) {
this.y1 = y1;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
@Override
public String execute() throws Exception {
FileInputStream fileInputStream = null;
ImageInputStream imageInputStream = null;
try {
fileInputStream = new FileInputStream(this.picturepath + this.picturename);
Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");
ImageReader imageReader = (ImageReader) iterator.next();
imageInputStream = ImageIO.createImageInputStream(fileInputStream);
imageReader.setInput(imageInputStream, true);
ImageReadParam param = imageReader.getDefaultReadParam();
Rectangle rect = new Rectangle(Math.round(Float.parseFloat(x1)), Math.round(Float.parseFloat(y1)), Math.round(Float.parseFloat(width)), Math.round(Float.parseFloat(height)));
param.setSourceRegion(rect);
BufferedImage bi = imageReader.read(0, param);
SiteUser siteUser = (SiteUser) ServletActionContext.getRequest().getSession().getAttribute("user");
Integer picname = siteUser.getUid();
ImageIO.write(bi, "jpg", new File("/home/yumingzhe/Openshift/researchzilla/web-site/target/researchzilla/avatarTmp/" + picname + ".jpg"));
imageInputStream.close();
fileInputStream.close();
siteUser.setPortrait("/avatarTmp/" + picname + ".jpg");
siteUserService.updateSiteUser(siteUser);
ServletActionContext.getRequest().getSession().setAttribute("user", siteUser);
File file = new File(this.picturepath + this.picturename);
file.delete();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
}