Imager

Imager\���\���\������¼\���������\���\���\¹\������¼\���

Imager\���\���\������¼\���������»��ӏ���돢���������Џ��������������������������������ޏ�����������\���\���\���\���\������̏����ď��������µ�����я����������������¹��¡��³���������؏��̏����Џ�������������������������������������¡��½������·���¼�돢����½Ð�������¹���������³����������½Ð�����������������������я��������¹��������������¡�¡�¡�

�돪�²¼������ CentOS 5.2 ������������\���\������������¹��¡�

�����������돢¡��³�����я���������������������\³\���\���\�������������̏���ߏ�����\���\���\���\���\�������\���\���\¹\������¼\������µ���������������������������«������\���\��\���\������·���������¹��¡�installed ������������\���\���\¹\������¼\�����돪Џ����Ώ�¡�updates �����������������ď�����\���\���\¹\������¼\������µ����������������������������������������\���\���\¹\������¼\������¹����������̏���ߏ��̏����������������¹��¡�

����¡����ď����� giflib-util ���������ޏ�����\���\���\¹\������¼\������·���������������������ޏ��������»������!! ���³�����������ҏ����Џ����������������� gif �����������򏪤������¹���������³���������̏��������­���������������������������������¹��¡������������¼���폢��

yum list | grep "libjpeg\|libtiff\|libpng\|giflib"

���­�������������������������������̏����������Ð�����µ¹\���\���\¹\������¼\������·���������������������µ��������¡�돪�½��쏪���쏢�������������³���������������Ï�����·���²������������������������������¹��¡�

giflib.i386            4.1.3-7.1.el5_3.1        installed       
giflib-devel.i386      4.1.3-7.1.el5_3.1        installed       
libjpeg.i386           6b-37                    installed       
libjpeg-devel.i386     6b-37                    installed       
libpng.i386            2:1.2.10-7.1.el5_3.2     installed       
libpng-devel.i386      2:1.2.10-7.1.el5_3.2     installed       
libtiff.i386           3.8.2-7.el5_2.2          installed       
libtiff-devel.i386     3.8.2-7.el5_2.2          installed       
giflib-utils.i386      4.1.3-7.1.el5_3.1        updates


���³���³���������������������������Ð������������������������������ Imager ������\���\���\¹\������¼\������¹���������Ð OK ���������¹��¡�

sudo cpan Imager

�돪�²¼������\³\���\���\������������µ���·������\���\���\¹\������¼\���½Ð�����������ď��«�������­�����������я�������ġ����¹������³������\»��ҏ����������򏪤���½Ð���������������«�����������Ï��«����������³���������������­���������¹��¡�

perl -MImager -e 'print join ", ", sort keys %Imager::formats'

# ½Ð����·���²���
# bmp, ft2, gif, ifs, jpeg, png, pnm, raw, tga, tiff

delicious������\���\���\���\������¼\�����ď�ԏ�����²��������䏪�½¼�����¹������API��돫�����������

�돪������\���\���\�돢����������½��Џ��­���������·���������̏�¡�delicious������\���\���\�����ď�ԏ����ҏ��½¼�����¹������API���������·��������¡�yager���µ�����я�����API�����ҏ����̏����Џ��µ���»���������������������������������������¹��¡��̏�¡�돪���������³������API���̏���돢�«����������������²��������䏢�̏��½¼�����µ�������������������������³���������̏����㏢�¹�����������������·��������¡�ġ����¹�����������ԏ����������ҡ������������������������������·�����ď�¡�¡�¡�

������������¡��³������돪�¼«����̏�������돫��������«������»�ߏ�������������돫��������������������������������·�����ď�¡�.Ž���Ž���+.(Ž\���Ž\)Ž���+.Ž���

�����������Ï��»��돫�����������������������������\��ӏ������돫�½������������·�����������Ï�����»�ߏ�������������¡�"���叢�� users"���������½¼�����¹������»������������������·���������������������¹��¡�·�����ď�ԏ�����������������������������·���������ġ������ҏ����Џ�𡯏����ď��������������«���������·���������������»�����я�¡������������������돫�½���������¡돢¡돢¡�����

http://sasata299.com/delicious/[URL]

��������¡��½������\��⏢�¼\���������delicious������\���\���\������·��������������������ď�ԏ��̏��������«���������������¹��¡�

http://sasata299.com/url/[URL]

��������¡񏪪������̏��½������\��⏢�¼\���������delicious������\���\���\������·�������������������������«������³���������������­������\��⏢�¼\������������«�돪䏢�·���������¹��¡�

<a href="http://sasata299.com/url/[URL]"><img src="http://sasata299.com/delicious/[URL]"></a>

¼�����돪����������̏����Џ��¹���������������­��������������¡��³�����я���������������������������򏫳���������¹������¡�\���\���\�����ď�ԏ�����²��������䏢�������·������½Ð�������¹����������������img\���\�돢����»������������������������������µ��������¡�

��������¡��³������\���\���\�����ď�ԏ����ҏ����ӏ��¹API��¡����Џ��������쏢���������������я������������������������·���������������������«���������¹���̏�¡����������������������½������������¹��¡�delicious������\���\���\�����ď�ԏ����ҏ�����������¹������������»��������¡��½������·���²���������Imager\���\���\������¼\���������»���������������²��������䏢�������·�����������ӏ��·���������������������¹��¡����ď�������¡�½���������������Imager\���\���\������¼\���������»��������������ď����я��������¹���ޏ�������¡�\���\½\���\������������«�����ď��������µ�����я����������«��������¡��������������������������������������������«��������������������¡�¡�

#!/usr/bin/perl

use strict;
use warnings;
use Digest::MD5 qw(md5_hex);
use LWP::Simple;
use utf8;
use JSON::Any;
use URI::Escape;
use Imager;
use CGI;
use MIME::Base64;

use constant IMAGE => 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAEElEQVR42mL4//8/A0CAAQAI/AL+26JNFgAAAABJRU5ErkJggg==';

my $q = CGI->new();
my $url = uri_unescape($q->param('entry'));
my $res = get('http://feeds.delicious.com/v2/json/urlinfo/' . md5_hex($url));

my $j = JSON::Any->new;
my $b_num = $j->Load($res)->[0]->{total_posts};
my $string;
if (defined $b_num and $b_num != 0) {
    $string = $b_num > 1 ? "$b_num users" : "$b_num user";
}

print $q->header("image/png");
if (!defined $string) {
    print decode_base64(IMAGE);
    exit;
}

my $font = Imager::Font->new(
    file  => '/path/to/DejaVuSerif-Bold.ttf',
    color => '#007bbb', # \���\���\���\���������ġ�
    size  => 10.5,
);
my $bbox_object = $font->bounding_box(string => $string);
my $img = Imager->new(
    xsize => $bbox_object->total_width + 4,
    ysize => $bbox_object->font_height,
);
$img->box(
    color => '#ebf6f7', # ������·���������ġ� 
    filled => 1,
);
$img->string(
    font => $font,
    text => $string,
    x    => 0,
    y    => $bbox_object->font_height + $bbox_object->descent - 3,
    aa   => 1, # \��\���\���\��\���\���\��\¹
);

binmode STDOUT;
$img->write(fd => fileno(STDOUT), type => 'png') or die $img->errstr;


\���\���\���\������¼\������µ���������������������������������������­��������������¡�����������\��ӏ���������ޏ����������������Ï�������¡�1x1���������폪����������²��������䏢����½Ð�������¹�����������������Ï��������·���������������������¹����29¹��ԏ����䏢���������á�����Ï���

\���\���\���\������¼\������µ������������������������¾���¹���������������²��������䏢���ҏ�돫�������������¡�55, 56¹��ԏ����䏢�������ԏ���̏��������½������²��������䏢����½Ð�������·���������������������¹��¡�½Ð����������\Ð\���\���\���\������¼\������������¹����������̏���ߏ��̏������������������������돪؏��·���������������������µ��������¡�

�����������������Ώ�������¡�

use constant IMAGE => 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAEElEQVR42mL4//8/A0CAAQAI/AL+26JNFgAAAABJRU5ErkJggg==';

���³���������ԏ���̏������������������³������\���\���\���\���\������¼��������돫��������������·�����ď�¡�join���·�����ď��ޏ�����������¾�������ߏ����������������돢¡�

perl -MData::Dump=dump -le 'open my $fh, "./default.png"; print dump(join "", <$fh>)'

¼�����돪����������̏����Џ��¹��������������¡��³�����я������������������������������������������¹����(���­Ž\��Ï��Ž\`)

delicious\\\ďԏ¼


���⏪����µ­����
���³������API������������²��������䏢����png������½Ð�������·���������������������¹��¡�gif���������«jpg���������������������������¡������­����������������½Ð�������������­�����������������Ώ����ď����������������я��������¹��¡�¾���돫�»��С���ӏ��������������������������·�����ď�����(���­��\��¾)

���³�����������������������������Ï����������������ď�����½Ð�����������������������Ï����������������������я��������������폢�폢�������«�������������µ��𡯏��������������������µ������������������
karaage299 at gmail.com
��돪������������µ­»���
\���\��\���\���\���\���