プログラマメモ2 - programmer no memo2

表現方法を模索中 - AffineTransformを使ってみる。simpleapiも使ってみる。その2 2008/05/10

はじめに


いろいろな方法で情報を表現することを模索中。



simpleapiを使ってみます。
ウェブサイト画面をキャプチャしてサムネイルにしてくれます。すばらしいwebサービスです。

それで、ウェブサイトのサムネイルを並べて表示してみようという試みです。

それで、deliciousからブックマークをとってきて、simpleapiでサムネイルをとってきて


それで、deliciousからブックマークをとってきて、simpleapiでサムネイルをとってきて、並べています。



並べるときに、 等角投影を意識して、えーと、奥行きがある感じを意識しています。全然、厳密ではないです。
simpleapiで取得したサムネイルをshearしています。

影でもつければ、もっといいかもしれません。

以前、作成した、del.icio.usからブックマークをとってくるコードを使っています。


以下、コードです。

package d;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;

import org.apache.http.HttpException;
import org.xml.sax.SAXException;

import d.DeliciousUtils.Post;

public class Test {

public static void main(String[] args) throws Exception {
a();
}

static void a() throws IOException, HttpException, InterruptedException,
URISyntaxException, XPathExpressionException, SAXException,
ParserConfigurationException {
String sxml = DeliciousUtils.get("username", "password",
"20080508");
// System.out.println(sxml);
List<Post> posts = DeliciousUtils.toPosts(sxml);

final List<BufferedImage> list = new ArrayList<BufferedImage>();
for (Post post : posts) {
list.add(simpleapi(post.href));
}

// System.out.println(list);

final AffineTransform affineTransform = new AffineTransform();
affineTransform.scale(.82602, 1);
affineTransform.shear(0, Math.toRadians(30));

final AffineTransformOp op = new AffineTransformOp(affineTransform,
AffineTransformOp.TYPE_BICUBIC);



JFrame frame = new JFrame();
class P extends JPanel {

@Override
protected void paintChildren(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
int x = list.size() * 23;
int y = 50;

for (BufferedImage image : list) {
x -= 20;
y += 20;

g2d.drawImage(op.filter(image, null), x, y, null);
}

}

}
P p = new P();
frame.getContentPane().add(p);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}

static BufferedImage simpleapi(String href) {
try {
return ImageIO.read(new URL("http://img.simpleapi.net/small/"
+ href));
} catch (Exception e) {
System.out.println(e);
}
return null;
}

}

: