画像Hacks
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
14,049
On Slideshare
12,070
From Embeds
1,979
Number of Embeds
13

Actions

Shares
Downloads
31
Comments
0
Likes
12

Embeds 1,979

http://yusukebe.com 1,672
http://yapcasia.org 176
http://paper.li 87
http://a0.twimg.com 23
http://us-w1.rockmelt.com 5
https://twitter.com 5
http://b.hatena.ne.jp 3
http://tweetedtimes.com 2
http://t.co 2
http://127.0.0.1:4474 1
http://hootsuite.com 1
http://cache.yahoofs.jp 1
http://www.slideshare.net 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. use strict;use warnings;use Imager;my $file = doya.jpg;my $image = Imager->new( file => $file ) or die Imager->errstr;$image = $image->scale( xpixels => 100 );$image->write( file => out.jpg ) or die $image->errstr;
  • 2. ...;my $image = Imager->new( file => $file ) or die Imager->errstr;$image = $image->scale( xpixels => 100 );$image = $image->crop( height => 100 ); #$image->write( file => out.jpg ) or die $image->errstr;...;
  • 3. sub get_map { my $gamma = shift; my @map = map { int( 0.5 + 255 * ( $_ / 255 )**$gamma ) } 0 .. 255; return @map;}$image->map( red => get_map(0.5), green => get_map(0.65), blue => get_map(0.8));my $waku = Imager->new( file => waku.png );$image->rubthrough( src => $waku );
  • 4. ...;my $font = Imager::Font->new( file => HiraKakuPro-W3.ttf );...;
  • 5. ...; my $qrcode = Imager::QRCode->new( size => 3, margin => 0, version => 1, level => M, casesensitive => 1, lightcolor => Imager::Color->new( 255, 255, 255 ), darkcolor => Imager::Color->new( 35, 54, 92 ), ); my $qr = $qrcode->plot( $text ); $qr = $qr->scale( xpixels => 90 ); $image = $image->paste( left => 590, top => 198, src => $qr );...;
  • 6.
  • 7. ...; my $diff = $org->difference( other => $numbers[$n] ); $diff = $diff->to_rgb8; my $count; for ( my $x = 0 ; $x < $width ; $x++ ) { for ( my $y = 0 ; $y < 38 ; $y++ ) { my $pixel = $diff->getpixel( x => $x, y => $y ); next unless $pixel; my $result = $pixel->rgba; $count++ if $result == 255; } }...;
  • 8. use Imager;use Image::ObjectDetect;my $image = Imager->new->read( file => picture.jpg );my $cascade = ./haarcascade_frontalface_alt2.xml;my $detector = Image::ObjectDetect->new($cascade);my @faces = $detector->detect($file); #←my $purple_source = Imager->new->read(file => ./purple.png);my $aspect = 1.5;for my $face (@faces) { my $purple = $purple_source->scale( xpixels => $face->{width} / $aspect, ypixels => $face->{height} / $aspect, ); $image->rubthrough( tx => $face->{width} / $aspect / 2 + $face->{x}, ty => $face->{height} / $aspect + $face->{y}, src => $purple, );}$image->write( file => ./output.jpg );
  • 9. • – –• – –
  • 10. •• – • – •• – • • •
  • 11. use Acme::Porn::JP;…;my $porn = Acme::Porn::JP->new;my $actress_list = $porn->actress();for my $actress ( @$actress_list ){ search("$query $actress”);}…;$ perl -MAcme::Porn::JP -e $p = Ace::Porn::JP->new; printscalar @{$p->actress};’4502
  • 12. •• – –•• –• positive.dat [filename]  [#  of  objects]  [[x  y  width  height]  [...  2nd  object]  ...] images/01.jpg  1  140  100  45  45 nega%ve.dat images/neg-­‐01.jpg images/neg-­‐02.jpg