OverlayImages.java 3.12 KB
package fi.insomnia.intra.helpers;

import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;

import javax.imageio.ImageIO;

import sun.misc.BASE64Decoder;

import fi.insomnia.intra.db.User;
import fi.insomnia.intra.db.UserImage;

public class OverlayImages {

    private static final String path = "/var/insomnia/kortti_";
    private static final String suffix = "_2009.jpg";
    private static final String vierailija = path + "vierailija" + suffix;
    private static final String pro = path + "pro" + suffix;
    private static final String pelaaja = path + "pelaaja" + suffix;
    private static final String org = path + "organisaattori" + suffix;
    private static final String robo = path + "robosota" + suffix;

    public static byte[] overlay(UserImage usr) {
	// ByteArrayInputStream bi = new
	// ByteArrayInputStream(img.getImageData());
	User owner = usr.getOwner();

	String name = "";
	String nick = "";
	try {
	    name =  new String(owner.getName().getBytes("ISO-8859-1"), "UTF-8");
	    nick = new String(owner.getNick().getBytes("ISO-8859-1"), "UTF-8");
	} catch (UnsupportedEncodingException e1) {
	    // TODO Auto-generated catch block
	    e1.printStackTrace();
	}
	
	
	String pohja = null;
	switch (owner.getType()) {
	case 1:
	    pohja = vierailija;
	    break;
	case 2:
	    pohja = pro;
	    break;
	case 10:
	    pohja = org;
	    break;
	case 11:
	    pohja = org;
	    break;
	default:
	    pohja = pelaaja;
	    break;

	}

	try {

	    byte[] naamabytes = new BASE64Decoder().decodeBuffer(new ByteArrayInputStream(usr.getImageData()));
	    ByteArrayInputStream naamastream = new ByteArrayInputStream(naamabytes);

	    BufferedImage face = ImageIO.read(naamastream);

	    BufferedImage org = ImageIO.read(new File(pohja));

	    BufferedImage image3 = new BufferedImage(638, 1011, BufferedImage.TYPE_INT_ARGB);
	    Graphics2D g = image3.createGraphics();
//	    g.drawImage(org, AffineTransform.getScaleInstance(0.31, 0.31), null);
	    g.drawImage(org, 0, 0,638,1011,null);
//	    g.drawImage(face, AffineTransform.getScaleInstance(0.31, 0.31), null);

	    g.drawImage(face, 310, 340, 280, 425, null);
	    g.setFont(new Font("Arial Black", Font.BOLD, 70));
	   
	    g.drawString(nick, 595 - g.getFontMetrics().charsWidth(nick.toCharArray(), 0, nick.length()), 840);

	    
	    
	    g.setFont(new Font("Arial", Font.BOLD, 35));
	    g.drawString(name, 595 - g.getFontMetrics().charsWidth(name.toCharArray(), 0, name.length()), 890);
	   
	    g.drawString(owner.getId().toString(), 60, 948);
	    g.dispose();

	    ByteArrayOutputStream ostr = new ByteArrayOutputStream();

	    ImageIO.write(image3, "png", ostr);
	    return ostr.toByteArray();
	} catch (IOException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
	return null;
    }

    public static void main(String[] asd) {
	// new OverlayImages().overlay();
    }
}