1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Проблемы с Imagemagick

Тема в разделе "Web - программирование", создана пользователем Asche, 22 янв 2009.

  1. Asche

    Asche Гость

    Репутация:
    0
    Никак не могу сделать так, чтобы функция make_thumbnail, обрабатывающая изображения, делала бекграунд не чёрным в png, а нужным мне цветом. Для заливки бекграунда в нужный мне цвет нужно к convert добавить -background #EEEEEE. Привожу функцию:
    Код:
    sub make_thumbnail($$$$$;$)
    {
    my ($filename,$thumbnail,$width,$height,$quality,$convert)=@_;
    
    # first try ImageMagick
    
    my $magickname=$filename;
    $magickname.="[0]" if($magickname=~/\.gif$/);
    
    $convert="convert" unless($convert);
    `$convert -size ${width}x${height} -geometry ${width}x${height}! -quality $quality $magickname $thumbnail`;
    
    return 1 unless($?);
    
    # if that fails, try pnmtools instead
    
    if($filename=~/\.jpg$/)
    {
    `djpeg $filename | pnmscale -width $width -height $height | cjpeg -quality $quality > $thumbnail`;
    # could use -scale 1/n
    return 1 unless($?);
    }
    elsif($filename=~/\.png$/)
    {
    `pngtopnm $filename | pnmscale -width $width -height $height | cjpeg -quality $quality > $thumbnail`;
    return 1 unless($?);
    }
    elsif($filename=~/\.gif$/)
    {
    `giftopnm $filename | pnmscale -width $width -height $height | cjpeg -quality $quality > $thumbnail`;
    return 1 unless($?);
    }
    
    # try Mac OS X's sips
    
    `sips -z $height $width -s formatOptions normal -s format jpeg $filename --out $thumbnail >/dev/null`; # quality setting doesn't seem to work
    return 1 unless($?);
    
    # try PerlMagick (it sucks)
    
    eval 'use Image::Magick';
    unless($@)
    {
    my ($res,$magick);
    
    $magick=Image::Magick->new;
    
    $res=$magick->Read($magickname);
    return 0 if "$res";
    $res=$magick->Scale(width=>$width, height=>$height);
    #return 0 if "$res";
    $res=$magick->Write(filename=>$thumbnail, quality=>$quality);
    #return 0 if "$res";
    
    return 1;
    }
    
    # try GD lib (also sucks, and untested)
    eval 'use GD';
    unless($@)
    {
    my $src;
    if($filename=~/\.jpg$/i) { $src=GD::Image->newFromJpeg($filename) }
    elsif($filename=~/\.png$/i) { $src=GD::Image->newFromPng($filename) }
    elsif($filename=~/\.gif$/i)
    {
    if(defined &GD::Image->newFromGif) { $src=GD::Image->newFromGif($filename) }
    else
    {
    `gif2png $filename`; # gif2png taken from futallaby
    $filename=~s/\.gif/\.png/;
    $src=GD::Image->newFromPng($filename);
    }
    }
    else { return 0 }
    
    my ($img_w,$img_h)=$src->getBounds();
    my $thumb=GD::Image->new($width,$height);
    $thumb->copyResized($src,0,0,0,0,$width,$height,$img_w,$img_h);
    my $jpg=$thumb->jpeg($quality);
    open THUMBNAIL,">$thumbnail";
    binmode THUMBNAIL;
    print THUMBNAIL $jpg;
    close THUMBNAIL;
    return 1 unless($!);
    }
    
    return 0;
    }
    Я пробовал сделать так:
    Код:
    sub make_thumbnail($$$$$;$)
    {
    my ($filename,$thumbnail,$width,$height,$quality,$convert)=@_;
    
    # first try ImageMagick
    
    my $magickname=$filename;
    $magickname.="[0]" if($magickname=~/\.gif$/);
    
    $convert="convert" unless($convert);
    `$convert -size ${width}x${height} -background #EEEEEE -geometry ${width}x${height}! -quality $quality $magickname $thumbnail`;
    С png всё становится нормально, но gif'ы вообще перестают создаваться.
     
Загрузка...
Похожие Темы - Проблемы Imagemagick
  1. CHEATER
    Ответов:
    1
    Просмотров:
    85
  2. Define

    Проблема Проблемы с шеллом

    Define, 18 июн 2017, в разделе: Kali Linux
    Ответов:
    2
    Просмотров:
    199
  3. Oksy
    Ответов:
    37
    Просмотров:
    1.766
  4. nikos
    Ответов:
    31
    Просмотров:
    1.365
  5. lmike
    Ответов:
    18
    Просмотров:
    795

Поделиться этой страницей