Sunday, April 11, 2010

EC2 SSH ACCESS File Upload from Remote

Amazon EC2に離れた場所からファイルをアップロードする場合のコード




////////////////////////////////////////////////////////////////////////////
package logic;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/*
* EC2FileUpload is for simply upload date from your desktop to Amazon EC2 server.
* You need jar file ganymed-ssh2-build250.jar from http://www.cleondris.ch/ssh2
*/
public class EC2FileUpload {

private static String key = "path to key xx.pem";
private static String hostname = "host name";
private static String username = "user name";

public static void main(String[] args) {
EC2FileUpload f = new EC2FileUpload();
f.upload("local path", "ec2 path");
}

public void upload(String pathFrom, String pathTo) {

File keyfile = new File(key); // or "~/.ssh/id_dsa"
String keyfilePass = ""; // will be ignored if not needed

try {

Connection conn = new Connection(hostname);
conn.connect();

boolean isAuthenticated = conn.authenticateWithPublicKey(username, keyfile, keyfilePass);

if (isAuthenticated == false) {
throw new IOException("Authentication failed.");
}

Session sess = conn.openSession();
// sess.execCommand("uname -a && date && uptime && who");
sess.execCommand("ls -l " + pathTo);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("Here is all file you upload to server:");

while (true) {
String line = br.readLine();
if (line == null) {
break;
}
System.out.println(line);
}


SCPClient scp = conn.createSCPClient();
scp.put(pathFrom, pathTo);

sess.close();
conn.close();

} catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
}
}

Java Image Resize

Java image resize code for making thumbnails.

Define Parameters:
String infile; // image from Infile
String outfile; // image to outfile
int thumbWidth; // convert max width
int thumbHeight; //convert max height
int quality; //converet quolity 0 to 100


import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Java Image Scale Converter 2009/4/5
* from JPEG or GIF format to JPEG.
*/
public class ImageScaleConverter {

String infile; // image from Infile
String outfile; // image to outfile
int thumbWidth; // convert max width
int thumbHeight; //convert max height
int quality; //converet quolity 0 to 100

public ImageScaleConverter(String infile, String outfile, int thumbWidth, int thumbHeight, int quality) {
this.infile = infile;
this.outfile = outfile;
this.thumbWidth = thumbWidth;
this.thumbHeight = thumbHeight;
this.quality = quality;
}


public void convert() {
BufferedOutputStream out = null;
try {
Image image = Toolkit.getDefaultToolkit().getImage(infile);
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
double thumbRatio = (double) thumbWidth / (double) thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int) (thumbWidth / imageRatio);
} else {
thumbWidth = (int) (thumbHeight * imageRatio);
}
BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
thumbImage = convertToJpeg(thumbImage);

Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
out = new BufferedOutputStream(new FileOutputStream(outfile));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
} catch (IOException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (ImageFormatException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
out.close();
} catch (IOException ex) {
Logger.getLogger(ImageScaleConverter.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

private BufferedImage convertToJpeg(BufferedImage image) {
BufferedImage convertedImage = new BufferedImage(
image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
convertedImage.getGraphics().drawImage(image, 0, 0, null);
return convertedImage;
}

public static void main(String[] args) {
ImageScaleConverter ic = new ImageScaleConverter("infile path", "outfile path", 300, 500, 100);
ic.convert();

}

}