vkgtaro (owner)

Revisions

gist: 200006 Download_button fork
public
Public Clone URL: git://gist.github.com/200006.git
Embed All Files: show embed
Perl #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
sub resize {
    my ( $self, $key, $info ) = @_;
 
    my ( $x, $y ) = ( $info->{x}, $info->{y} );
 
    my $img = Imager->new();
    unless ( $img->read( file => $self->request->uploads->{$key}->tempname ) ) {
        $self->log->fatal($img->errstr);
        return;
    }
 
    $img = $img->scale(xpixels => $x, ypixels => $y, type => 'min');
    
    my $base_img = Imager->new( xsize => $x, ysize => $y );
 
    # 背景画像を白で塗りつぶす。
    $base_img->box(
        # white
        color => Imager::Color->new(255, 255, 255),
        xmin => 0,
        ymin => 0,
        xmax => $x,
        ymax => $y,
        filled => 1000
    );
 
    # 変更された縦横を求める。
    my $img_x = $img->getwidth;
    my $img_y = $img->getheight;
    
    # 背景画像に貼り付ける。
    my $left = int(($x - $img_x) / 2);
    my $top = int(($y - $img_y) / 2);
    $base_img->paste( left => $left, top => $top, src => $img );
 
    return $base_img;
}