удобного. У меня есть тестовое задание. Парни, помогите мне правильно понять, что от меня меня хотят. Вот как задание выглядит в оригинале: Написать скрипт создания тамбнейла графического или видео файла(минимальный набор форматов png, jpg, flv, mp4), на входе путь к файлу, размер, на выходе путь к файлу тамбнейла. Как я его понял: тамбнейлы - это что-то вроде превьюшек. Форматы png и jpg я обработал с помощью функции imagecopyresized(). Загрузил, скопировал, уменьшил. А что делать с форматом mp4 мне совершенно непонятно. Все, что нашел в инете, связанное с php и обработкой видео, это инфу о программке ffmpeg. Поигрался с ней и написал скрипт, который при загрузке видео выцепляет несколько кадров и сохраняет их в jpg. Но в итоге тех ребят, которые мне это задание дали, это не устроило. Подробностей говорить не хотят)) Так вот что от меня хотят эти славные мэны? Подскажите, в каком направлении мне рыть?) PS. Задание сие является тестовым, посему практической цели никакой не носит. Просто хотят посмотреть, на что я способен.
Это ноготь большого пальца. Превьюшка, да. ну тогда и забей. Может им рожа твоя не понравилась. Покажи код, может че скажем более предметно. по всей видимости ничего
это скрипт работает с программкой ffmpeg PHP: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>ffmpeg</title> </head> <body> <form method="post" action="ffmpeg.php" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="submit" value="ok"> </form> <?php if(isset($_POST['submit'])){ $ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg"; $video_file = $_FILES['file']['tmp_name']; $image_file = "1.jpg"; $size = "120x90"; // $get_from_second = 5; // $cmd = $ffmpeg." -i ".$video_file." -an -ss ".$get_from_second." -s ".$size." testimg/".$n.".jpg"; for($n = 1; $n <= 3; $n++){ $interval = $n * 3; shell_exec($ffmpeg." -i ".$video_file." -an -ss ".$interval." -s ".$size." testimg\\".$n.".jpg"); echo "Created ".$n.".jpg<br>"; echo "<img src = 'testimg/".$n.".jpg';><br>"; } } ?> </body> </html> --- Добавлено --- Этот скрипт загружает, копирует и изменяет размер картинки PHP: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Image resize</title> </head> <body> <form method="post" action="resizeimage.php" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="submit" value="ok"> </form> <?php $file = $_FILES['file']['name']; $tmp = $_FILES['file']['tmp_name']; $dir = "testimg"; $ext = pathinfo($file, PATHINFO_EXTENSION);//добываем тип файла if(is_uploaded_file($tmp)){//проверяем, получили ли мы файл if($ext == "jpg" || $ext == "jpeg" || $ext == "png"){//проверяем тип файла. если jpg или png - продолжаем $file = rand(100, 999).".".$ext;//переименовываем файл (если кириллица, чтоб не морочиться с кодировкой) if(move_uploaded_file($tmp, $dir."/".$file)){//проверяем, переместили ли мы файл в нужную директорию //узнаем размер картинки и подставляем значения в переменные list($w, $h) = getimagesize($dir."/".$file); if($w > $h){//если ширина больше высоты $new_w = 140; //вычисляем новую высоту $new_h = 140 * $h / $w; //округляем $new_h = round($new_h, 0); }else{ $new_w = 140 * $w / $h; $new_w = round($new_w, 0); $new_h = 140; } //задаем новую картинку с новыми размерами $new_file = imagecreatetruecolor($new_w, $new_h); if($ext == "jpg" || $ext == "jpeg"){ $source = imagecreatefromjpeg($dir."/".$file); } if($ext == "png"){ $source = imagecreatefrompng($dir."/".$file); } if(imagecopyresized($new_file, $source, 0, 0, 0, 0, $new_w, $new_h, $w, $h)){ if($ext == "jpg" || $ext == "jpeg"){ $image = imagejpeg($new_file, $dir."/"."new_".$file, 90); } if($ext == "png"){ $image = imagepng($new_file, $dir."/"."new_".$file, 90); } //показываем результат echo "<p> ".$new_w." x ".$new_h."<br> <img src='testimg/new_".$file."'> </p>"; }else{ exit("у тебя не получилось изменить размер картинки"); } }else{ exit("это не картинка"); } }else{ exit("это не jpg и не png"); } }else{ exit("это не картинка"); } ?> </body> </html> --- Добавлено --- может быть. поговаривают, что эти славные мэны работают исключительно на битриксе, а про битрикс я ничего положительного не вычитывал, кроме разве что на стартовой странице официального сайта)
Исходное задание не говорит о загрузке файла. Я так понимаю, требуется написать библиотечную функцию или класс: на входе путь, на выходе другой путь. А ты наваял вебформу. Это самодеятельность.
Никто не любит битрикс. Но ты собираешся бросить это задание из-за того что не получилось, именно поэтому начал искать косяки в тех парнях. А не потому, что они говномесы. Это непродуктивно.
вот была отличная возможность поиграться с классами, я упустил. спасибо) поясните пожалуйста, как мне загуглить этот момент, что в цитате выше? не очень представляю, как это должно выглядеть --- Добавлено --- нене) я лишь рассматриваю все возможные варианты исхода)) спасибо за ориентир. попробую им накидать класс. может в этот раз прокатит
Возьми за образец любую библиотеку манипуляции изображениями. Вот хотябы Intervention image. А где-то внутри класса надо обнаруживать особый случай: если входящий файл видео, а не картинка. В этом случае пусть обращается к еще одному классу, который рулит ffmpeg. Но снаружи это не должно быть видно. Это чёрный ящик: есть описанный интерфейс и известно какой результат будет. Но детали реализации не должны бросаться в глаза.
Ещё есть расширение для PHP http://ffmpeg-php.sourceforge.net/ чтобы удобнее обращаться к FFmpeg без exec.