0usersから10000usersまでの画像を作る
スポンサードリンク
会社のサイトで被ブックマーク数を表示しているスクリプトが、ユーザ側でJavaScriptのdocument.writeで表示しているため、表示がそこで止まってしまうから、imgで表示すると、非同期になるからよくね? と言われたので、ユーザー数を表示する画像を作ろうと思っていたのですけれども、半月ぐらい忘れていてやばいので今作る。
Photoshopの変数でやる方法もあるけれどもデータセット作るところがめんどくさくなったのでPerlでやることにした。でも、Excel使えばデータセット一瞬なんですけどね。
filename: makeusersimg.pl
#!/usr/bin/perl
use strict;
use warnings;
use GD;
my $image_dir = './images';
foreach ( my $i = 0; $i < 10000; $i++ ) {
my $text_filename = "$i";
my $text = "$i user";
if ( $i != 1 ) { $text .= 's'; }
my $img_path = "$image_dir/$text_filename.gif";
#if (!-e $img_path) {
my $img = str2gif_gd($text);
{
open my $fh, '>', $img_path or die $!;
print $fh $img;
close $fh;
}
#}
}
exit;
sub str2gif_gd {
my $str =shift;
#my $fontpath = "/usr/share/fonts/japanese/TrueType/kochi-gothic-subst.ttf";
my $fontpath = "/usr/share/fonts/default/Type1/a010013l.pfb";
die "Font file not found. $fontpath\n" unless -e $fontpath;
my $size = 10;
my @bg = (255, 204, 204);
my @fg = (255, 0, 0);
# obtain bounds first
my $im = GD::Image->new( 1, 1 );
my @bounds = GD::Image->stringFT( $im->colorAllocate( 0, 0, 0 ),
$fontpath, $size, 0, 0, 0, $str );
my $width = $bounds[2] - $bounds[6];
my $height = $bounds[3] - $bounds[7];
# then draw
$im = GD::Image->new( $width , $height );
my $bg = $im->colorAllocate(@bg);
my $fg = $im->colorAllocate(@fg);
$im->fill(0, 0, $bg);
$im->stringFT( $fg, $fontpath, $size, 0, 0, 0 -$bounds[5], $str );
#$im->transparent($bg);
return $im->gif();
}
GDで生成するところはDan Kogaiのを使いました。
思ったんだけれども、ext3で1つのディレクトリに10000個もファイル置くとやっぱりパフォーマンス落ちるんかな。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3038





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)

コメントする