• Как сделать тень к картинке на PHP?

    B_Roma
    @B_Roma Автор вопроса
    Ребятки всем спасибо за помощь! Ответ почти найден !С помощью ПыХИ можно сделать тенюшку!

    $im = new Imagick( ROOT."/photo-cropped2.jpg" );
    $im->setImageFormat("png");
    $im->thumbnailImage( 200, null );
    $shadow = $im->clone();
    $shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) );
    $shadow->shadowImage( 80, 3, 5, 5 );
    $shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );
    header( "Content-Type: image/png" );
    echo $shadow;


    Как сделаю полностью рабочий скрипт выложу =)может кому поможет =)))
    define('ROOT',dirname(__FILE__));
    $outFile1 = ROOT."/photo-cropped1.png";
    $outFile2 = ROOT."/photo-cropped2.png";
    $outFile3 = ROOT."/photo-cropped3.png";
    $outFile4 = ROOT."/photo-cropped4.png";
    $outFile5 = ROOT."/photo-cropped5.png";
    
    
    
    function createImage($outFile,$w,$h,$x,$y){
        $inFile = ROOT."/thumb_l_28550.png";
        $image = new Imagick($inFile);
        $image->cropImage($w, $h, $x, $y);
        $image->writeImage($outFile);
        $im = new Imagick( $outFile );
        $im->setImageFormat("png");
        $im->thumbnailImage( 140, null );
        $shadow = $im->clone();
        $shadow->setImageBackgroundColor( new ImagickPixel( 'black' ));
        $shadow->shadowImage( 50, 7, 3, 3 );
        $shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );
        $shadow->writeImage($outFile);
        return $shadow;
    }
    
    createImage($outFile1,150, 170, 20, 190);
    createImage($outFile2,150, 300, 178, 127);
    createImage($outFile3,150, 600, 336, 23);
    createImage($outFile4,150, 300, 495, 127);
    createImage($outFile5,150, 170, 653, 190);
    
    $src1=new Imagick(ROOT.'/white.png');
    $src2=new Imagick($outFile1);
    $src3=new Imagick($outFile2);
    $src4=new Imagick($outFile3);
    $src5=new Imagick($outFile4);
    $src6=new Imagick($outFile5);
    
    $src1->compositeImage($src2,Imagick::COMPOSITE_OVER, 20,190);
    $src1->compositeImage($src3,Imagick::COMPOSITE_OVER, 178, 127);
    $src1->compositeImage($src4,Imagick::COMPOSITE_OVER, 336, 23);
    $src1->compositeImage($src5,Imagick::COMPOSITE_OVER, 495, 127);
    $src1->compositeImage($src6,Imagick::COMPOSITE_OVER, 653, 190);
    $src1->writeImage(ROOT.'/result.png');

    Собственно вот и код !Прошу сильно не бить! Буду рад конструктивной критики =)
    вот такой получился результат

    aa485e302a80431198b8ad4b395d200f.png
    Ответ написан
    Комментировать
  • Как сделать тень к картинке на PHP?

    villiwalla
    @villiwalla
    HTML-верстка
    Полагаю, нарезать основное изображение на нужно кол-во изображений, сохранить как отдельные изображения и по отдельности добавить тени, после создать пустое изображение нужного размера и в нём разместить все необходимые изображения. И всё это средствами php.
    Ответ написан
    Комментировать
  • Математика и олимпиадное программирование?

    tsarevfs
    @tsarevfs
    C++ developer
    Олимпиады это отличный бонус при поступлении в вуз. 10 класс это поздновато для начала, но попытаться стоит.
    Посмотрите на программу ЛКШ. Многие успешные олимпиадники учились там. Хорошо почитать про вещи представленные в ней (начиная с уровня D до A). Может быть полезно почитать вики за 1, 2, 3 семестр, особенно про комбинаторику, динамику, графы, поисковые структуры.
    Нужно очень много практики. Неплохим вариантом будет прорешивать задачи с acmp.ru. Количество важно. Нужно научиться делать это быстро.
    Ответ написан
    2 комментария
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

    Я сам преподаватель программирования в колледже, и, к сожалению, таких желающих изучать там очень мало. Пишите мне в личку, если будут вопросы.

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий