亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? image.pm

?? 1. 記錄每個帖子的訪問人情況
?? PM
字號:
# Copyright 2001-2005 Six Apart.# SCRiPTMAFiA 2005 - THE DiRTY HANDS ON YOUR SCRiPTS## $Id: Image.pm 10197 2005-03-09 00:27:57Z ezra $package MT::Image;use strict;use MT;use MT::ConfigMgr;use MT::ErrorHandler;@MT::Image::ISA = qw( MT::ErrorHandler );sub new {    my $class = shift;    $class .= "::" . MT::ConfigMgr->instance->ImageDriver;    my $image = bless {}, $class;    $image->load_driver        or return $class->error( $image->errstr );    if (@_) {        $image->init(@_)            or return $class->error( $image->errstr );    }    $image;}sub get_dimensions {    my $image = shift;    my %param = @_;    my($w, $h) = ($image->{width}, $image->{height});    if (my $pct = $param{Scale}) {        ($w, $h) = (int($w * $pct / 100), int($h * $pct / 100));    } else {        if ($param{Width} && $param{Height}) {            ($w, $h) = ($param{Width}, $param{Height});        } else {            my $x = $param{Width} || $w;            my $y = $param{Height} || $h;            my $w_pct = $x / $w;            my $h_pct = $y / $h;            my $pct = $x ? $w_pct : $h_pct;            ($w, $h) = (int($w * $pct), int($h * $pct));        }    }    ($w, $h);}package MT::Image::ImageMagick;@MT::Image::ImageMagick::ISA = qw( MT::Image );sub load_driver {    my $image = shift;    eval { require Image::Magick };    return $image->error(MT->translate("Can't load Image::Magick: [_1]", $@))        if $@;    1;}sub init {    my $image = shift;    my %param = @_;    my %arg = ();    if (my $type = $param{Type}) {        %arg = (magick => lc($type));    } elsif (my $file = $param{Filename}) {        (my $ext = $file) =~ s/.*\.//;        %arg = (magick => lc($ext));    }    my $magick = $image->{magick} = Image::Magick->new(%arg);    if (my $file = $param{Filename}) {        my $x = $magick->Read($file);        return $image->error(MT->translate(            "Reading file '[_1]' failed: [_2]", $file, $x)) if $x;        ($image->{width}, $image->{height}) = $magick->Get('width', 'height');    } elsif ($param{Data}) {        my $x = $magick->BlobToImage($param{Data});        return $image->error(MT->translate(            "Reading image failed: [_1]", $x)) if $x;        ($image->{width}, $image->{height}) = $magick->Get('width', 'height');    }    $image;}sub scale {    my $image = shift;    my($w, $h) = $image->get_dimensions(@_);    my $magick = $image->{magick};    my $err = $magick->can('Resize') ?              $magick->Resize(width => $w, height => $h) :              $magick->Scale(width => $w, height => $h);    return $image->error(MT->translate(        "Scaling to [_1]x[_2] failed: [_3]", $w, $h, $err)) if $err;    $magick->Profile("*") if $magick->can('Profile');    wantarray ? ($magick->ImageToBlob, $w, $h) : $magick->ImageToBlob;}package MT::Image::NetPBM;@MT::Image::NetPBM::ISA = qw( MT::Image );sub load_driver {    my $image = shift;    eval { require IPC::Run };    return $image->error(MT->translate("Can't load IPC::Run: [_1]", $@))        if $@;    my $pbm = $image->_find_pbm or return;    1;}sub init {    my $image = shift;    my %param = @_;    if (my $file = $param{Filename}) {        $image->{file} = $file;        if (!defined $param{Type}) {            (my $ext = $file) =~ s/.*\.//;            $param{Type} = uc $ext;        }    } elsif (my $blob = $param{Data}) {        $image->{data} = $blob;    }    my %Types = (jpg => 'jpeg', gif => 'gif');    my $type = $image->{type} = $Types{ lc $param{Type} };    my($out, $err);    my $pbm = $image->_find_pbm or return;    my @in = ("$pbm${type}topnm", ($image->{file} ? $image->{file} : ()));    my @out = ("${pbm}pnmfile", '-allimages');    IPC::Run::run(\@in, '<', ($image->{file} ? \undef : \$image->{data}), '|',        \@out, \$out, \$err)        or return $image->error(MT->translate(            "Reading image failed: [_1]", $err));    ($image->{width}, $image->{height}) = $out =~ /(\d+)\s+by\s+(\d+)/;    $image;}sub scale {    my $image = shift;    my($w, $h) = $image->get_dimensions(@_);    my $type = $image->{type};    my($out, $err);    my $pbm = $image->_find_pbm or return;    my @in = ("$pbm${type}topnm", ($image->{file} ? $image->{file} : ()));    my @scale = ("${pbm}pnmscale", '-width', $w, '-height', $h);    my @out;    for my $try (qw( ppm pnm )) {        my $prog = "${pbm}${try}to$type";        @out = ($prog), last if -x $prog;    }    my(@quant);    if ($type eq 'gif') {        push @quant, ([ "${pbm}ppmquant", 256 ], '|');    }    IPC::Run::run(\@in, '<', ($image->{file} ? \undef : \$image->{data}), '|',        \@scale, '|',        @quant,        \@out, \$out, \$err)        or return $image->error(MT->translate(            "Scaling to [_1]x[_2] failed: [_3]", $w, $h, $err));    wantarray ? ($out, $w, $h) : $out;}sub _find_pbm {    my $image = shift;    return $image->{__pbm_path} if $image->{__pbm_path};    my @NetPBM = qw( /usr/local/netpbm/bin /usr/local/bin /usr/bin );    my $pbm;    for my $path (MT::ConfigMgr->instance->NetPBMPath, @NetPBM) {        next unless $path;        $path .= '/' unless $path =~ m!/$!;        $pbm = $path, last if -x "${path}pnmscale";    }    return $image->error(MT->translate(        "You do not have a valid path to the NetPBM tools on your machine."))        unless $pbm;    $image->{__pbm_path} = $pbm;}1;__END__=head1 NAMEMT::Image - Movable Type image manipulation routines=head1 SYNOPSIS    use MT::Image;    my $img = MT::Image->new( Filename => '/path/to/image.jpg' );    my($blob, $w, $h) = $img->scale( Width => 100 );    open FH, ">thumb.jpg" or die $!;    binmode FH;    print FH $blob;    close FH;=head1 DESCRIPTIONI<MT::Image> contains image manipulation routines using either theI<NetPBM> tools or the I<ImageMagick> and I<Image::Magick> Perl module.The backend framework used (NetPBM or ImageMagick) depends on the value ofthe I<ImageDriver> setting in the F<mt.cfg> file (or, correspondingly, seton an instance of the I<MT::ConfigMgr> class).Currently all this is used for is to create thumbnails from uploaded images.=head1 USAGE=head2 MT::Image->new(%arg)Constructs a new I<MT::Image> object. Returns the new object on success; onerror, returns C<undef>, and the error message is in C<MT::Image-E<gt>errstr>.I<%arg> can contain:=over 4=item * FilenameThe path to an image to load.=item * DataThe actual contents of an image, already loaded from a file, a database,etc.=item * TypeThe image format of the data in I<Data>. This should be either I<JPG> orI<GIF>.=back=head2 $img->scale(%arg)Creates a thumbnail from the image represented by I<$img>; on success, returnsa list containing the binary contents of the thumbnail image, the width of thescaled image, and the height of the scaled image. On error, returns C<undef>,and the error message is in C<$img-E<gt>errstr>.I<%arg> can contain:=over 4=item * Width=item * HeightThe width and height of the final image, respectively. If you provide only oneof these arguments, the other dimension will be scaled appropriately. If youprovide neither, the image will be scaled to C<100%> of the original (that is,the same size). If you provide both, the image will likely look ratherdistorted.=item * ScaleTo be used instead of I<Width> and I<Height>; the value should be a percentage(ie C<100> to return the original image without resizing) by which both thewidth and height will be scaled equally.=back=head1 AUTHOR & COPYRIGHTPlease see the I<MT> manpage for author, copyright, and license information.=cut

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看亚洲a| 亚洲欧美精品午睡沙发| 国产精品国产精品国产专区不蜜| 亚洲品质自拍视频网站| 久久国产生活片100| 成人短视频下载| 欧美一区二区日韩| 亚洲国产视频直播| 波多野结衣精品在线| 日韩欧美一级片| 五月婷婷久久丁香| 色偷偷成人一区二区三区91| 国产亚洲欧美激情| 久久国产尿小便嘘嘘| 欧美色精品在线视频| 中文字幕一区二区不卡| 国产精品亚洲一区二区三区妖精| 欧美精品粉嫩高潮一区二区| 亚洲欧洲制服丝袜| 成人精品视频一区二区三区| 精品卡一卡二卡三卡四在线| 日韩电影在线看| 精品视频在线看| 亚洲一区二区三区激情| 91美女福利视频| 中文字幕一区不卡| 成人黄色小视频| 国产精品午夜久久| 成人午夜免费视频| 国产精品狼人久久影院观看方式| 国产一区二区在线视频| 精品成人一区二区| 黄网站免费久久| 日韩欧美成人一区| 久久精品国产免费看久久精品| 在线播放日韩导航| 另类小说图片综合网| 日韩欧美国产麻豆| 韩国一区二区视频| 国产女人18水真多18精品一级做| 国产精品一区二区男女羞羞无遮挡| 2021中文字幕一区亚洲| 国产成人鲁色资源国产91色综| 久久美女艺术照精彩视频福利播放 | 精品区一区二区| 精品无人区卡一卡二卡三乱码免费卡| 日韩亚洲电影在线| 激情五月婷婷综合| 国产精品美女久久久久久| 99久久国产综合精品色伊| 亚洲精品第1页| 欧美色欧美亚洲另类二区| 青草国产精品久久久久久| 精品国产一区二区在线观看| 国产成人8x视频一区二区 | 久久久久久影视| gogogo免费视频观看亚洲一| 一区二区高清免费观看影视大全| 精品视频1区2区| 国产一区二区三区日韩| 日韩毛片精品高清免费| 欧美欧美欧美欧美首页| 毛片av中文字幕一区二区| 欧美一区二区黄| 麻豆精品视频在线观看视频| 欧美成人aa大片| 国内外成人在线视频| 久久久.com| 韩日欧美一区二区三区| 成人欧美一区二区三区视频网页 | 91网站在线观看视频| 中文字幕在线不卡一区| 这里是久久伊人| 国产精品综合二区| 亚洲色图欧美偷拍| 欧美日韩一区二区三区高清 | 亚洲高清免费一级二级三级| 在线视频欧美精品| 麻豆91精品91久久久的内涵| 国产亚洲欧美一区在线观看| 一本高清dvd不卡在线观看| 亚洲成人综合在线| 久久―日本道色综合久久| 不卡一区中文字幕| 亚洲电影一级黄| 久久久91精品国产一区二区三区| 成人在线视频一区| 天天做天天摸天天爽国产一区| 精品欧美一区二区久久| 91在线观看视频| 日本中文一区二区三区| 久久伊人中文字幕| 色悠悠亚洲一区二区| 蜜桃精品在线观看| 亚洲视频在线一区二区| 欧美一区二区三区视频| 成人免费va视频| 国产一区二区成人久久免费影院| 一区二区三区精品视频| 精品久久久久一区二区国产| 91久久国产综合久久| 九九视频精品免费| 亚洲一二三四久久| 国产欧美一区二区精品久导航 | 亚洲一区二区三区国产| 国产视频一区在线播放| 欧美中文字幕一区二区三区| 粉嫩av亚洲一区二区图片| 蜜臀av性久久久久蜜臀aⅴ| 亚洲天堂久久久久久久| 国产三级欧美三级日产三级99| 555www色欧美视频| 91福利精品第一导航| 成人a免费在线看| 经典三级视频一区| 青青草视频一区| 亚欧色一区w666天堂| 亚洲18女电影在线观看| 中文字幕视频一区二区三区久| 欧美精品一区二区久久久| 91精品国产品国语在线不卡| 欧美性色综合网| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲va中文字幕| 一区二区三区中文免费| 中文字幕在线播放不卡一区| 亚洲国产精品成人综合色在线婷婷| 日韩精品一区二区在线| 91精品国产综合久久精品图片 | 国产欧美日韩视频一区二区 | 国模冰冰炮一区二区| 久久99精品视频| 狠狠色丁香久久婷婷综| 日韩av一区二区三区| 亚洲自拍偷拍欧美| 日韩av电影免费观看高清完整版| 亚洲va韩国va欧美va精品 | 国产一区二区三区蝌蚪| 国产一区二区不卡在线| 国产精品自拍一区| 国产精品456露脸| 国产裸体歌舞团一区二区| 国产成人精品一区二| 国产成人精品免费在线| 国产成人av网站| 99热这里都是精品| 在线视频综合导航| 欧美日韩亚洲综合在线| 精品视频999| 久久日一线二线三线suv| 久久久激情视频| 亚洲另类一区二区| 性做久久久久久免费观看欧美| 日本成人在线不卡视频| 精品一区二区免费视频| 久久99精品国产.久久久久| 99热精品国产| 91精品在线麻豆| 26uuu国产在线精品一区二区| 国产精品沙发午睡系列990531| 综合亚洲深深色噜噜狠狠网站| 一区二区三区四区亚洲| 天天色天天爱天天射综合| 成人高清免费观看| 欧美精品vⅰdeose4hd| 欧美精品一区二区在线观看| 中文字幕电影一区| 亚瑟在线精品视频| 国产成人精品亚洲午夜麻豆| 欧美丰满少妇xxxxx高潮对白| 久久九九99视频| 亚洲午夜精品网| 蜜桃久久精品一区二区| 在线看一区二区| 日韩精品一区二区三区视频在线观看| 久久综合久久综合亚洲| 亚洲黄色免费网站| 国产福利不卡视频| 精品视频色一区| 亚洲视频一区二区在线观看| 琪琪一区二区三区| 色先锋资源久久综合| 久久色在线视频| 五月天激情小说综合| 99精品国产91久久久久久| 精品少妇一区二区三区免费观看| 亚洲欧洲一区二区在线播放| 麻豆精品国产91久久久久久| 色婷婷综合中文久久一本| 国产丝袜在线精品| 午夜精品视频在线观看| 成人av免费在线观看| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美影院午夜播放| 国产欧美精品一区aⅴ影院 | 欧美精品乱码久久久久久| 亚洲欧洲国产专区| 国内成人免费视频| 欧美一区二区视频网站| 亚洲另类中文字|