RE: Идея на тему больших картинок и ограничений хостингов

    Этот пост является ответом на идею изложенную в этом топике

    Суть: вы хозяин сайта и вам нужно ресайзнуть изображение заливаемое юзером, но у вас не достаточно для этого возможностей.
    Решение: Мы делаем для вас «проксик» который все делает за вас и отдает вашему скрипту результат.
    Как пользоваться:

    В форме заливки изображения вы пишете примерно следующее

    <form enctype="multipart/form-data" action="http://sjpg.ru/remoteupload.php" method="post" />
    Image:
    <input name="Image" type="file" size="85" > <input type="submit" value="Upload" />
    <input type="hidden" name="maxwidth" value="600" />
    <input type="hidden" name="maxheight" value="700" />
    <input type="hidden" name="quality" value="70" />
    <input type="hidden" name="destination" value="sjpg.ru/upload.php" />
    <input type="hidden" name="redirecturl" value="ya.ru" />
    </form>


    , где sjpg.ru/remoteupload.php — это наш прокси;
    destination — это ваш скрипт которому мы зальем картинку в поле Image, также он получит все поля пост запроса которые нам пришлет юзер(так можно передавать сессии);
    redirecturl — сюда сервер отправит пользователя после завершения закачки, но скорее всего до того как картинка попадет к вам на сервер.
    в этом примере я заливаю картинку на свой же сайт и посылаю юзера в яндекс.

    Вот в общем то и все.
    Сервис очень сырой и сейчас захостен на штатовском шаредхостинге. Если будет заинтересованность перенесем в Маскву на вдс например.
    Проблема достаточно специфичная и возможно поклонников окажется не так много.

    Пробуйте и обязательно пишите отзывы.

    upd:
    Пример кода на php, который загружает картинку для сессии а потом ее выводит для юзера с этой сессией. Этот код всего лишь демонстрация, не делайте так на продакшне :)

    <?php
    if(isset($_FILES['Image'])&&isset($_POST['imageId'])){
    move_uploaded_file($_FILES['Image']['tmp_name'], "images/".intval($_POST['imageId']).".jpg");
    }
    else{
    session_start();
    if(isset($_SESSION['imageId'])) {
    echo '<img src="/images/'.$_SESSION['imageId'].'.jpg" />';
    }
    else {
    $_SESSION['imageId']= rand();
    ?>
    <form enctype="multipart/form-data" action="http://sjpg.ru/remoteupload.php" method="post" />
    Image:
    <input name="Image" type="file" size="85" > <input type="submit" value="Upload" />
    <input type="hidden" name="maxwidth" value="120" />
    <input type="hidden" name="maxheight" value="120" />
    <input type="hidden" name="quality" value="85" />
    <input type="hidden" name="destination" value="yourdomain.domain/test.php" />
    <input type="hidden" name="redirecturl" value="yourdomain.domain/test.php" />
    <input type="hidden" name="imageId" value="<?php echo $_SESSION['imageId']; ?>" />
    </form>

    <?php
    }
    }
    ?>


    Попробовать эту штуку, как клиент можно по адресу c2009.ru/test.php, там точно такой же код, только домен другой.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 27

      0
      Приношу извенения за теги… сейчас поправлю
        0
        Поправил
        –5
        Вы уж извините, но помоему это бред :)
          0
          Можете немного аргументировать ваш ответ?
          Когда создавал топик, было интересно действительно ли это кому то надо?
          А вообще рассматриваю создание таких сервисов как первый шаг к созданию внешних хранилищ картинок и других данных.
            –1
            небыло времени аргументировать, уже заминусовали, ну да ладно.
            Просто я считаю что это лишние телодвижения, если не хватает ресурсов на проекте, то можно сделать чтобы картинка ресайзилась у пользователя и заливалась уже нужного размера. Как ниже написали уже, это сделано на вконтакте.
              0
              Есть еще масса решений на явааплетах. У всех в общем есть один недостаток.
                0
                Какой?
                  0
                  очевидный) нужен флеш или явамашинка.
          0
          Идея-то хороша, но замахнулись не меньше, как на амазоновские сервисы. Если любой достаточно посещаемый ресурс начнёт пользоваться фишкой, Вы не выдержите. Да и какой смысл? Ладно бы Вы за деньги сервис предоставляли профессионально, другой вопрос.
          *я не просто пишу, я очень заинтересован в таком сервисе, бо сейчас просто покупаю доп дедики только из-за ресайза картинок.
            +1
            А какую нагрузку примерно держит один дедик и с какой конфигурацией? И как вы с ними общаетесь? если не секрет конечно.

            «а и какой смысл? Ладно бы Вы за деньги сервис предоставляли профессионально, другой вопрос.» в уме пока 3 смысла нашел:
            1) для низкобюджетных сайтов — пока идет ресайз и заливка на целевой сервер показываем рекламу.
            2) для тех кто может заплатить — убираем рекламу =)
            3) для всех — храним картинку для своего собственной галереи картинок

            третий самый сложный пункт, но самый интересный, можно организовать например поиск по цветовому решению или делать запросы типа «люди», «лицо», «животные», реализовать можно, но чтобы это описать ниодин хабратопик понадобится :)
            –1
            Может выложите исходник скрипта обработчика, для вебмастеров? Я хочу сделать у себя на сайте скрипт при загрузке фото на аватар автоматический уменшалься, но опыта маловато.
            Хотя можно через вашу форму пользоваться.
            Еще вопрос возможно ли через форму вернуть две картинки, как хабрахабре? 24 x 24 48 x 48 (Еще и 100х100)
              +1
              Можно, чисто технически, но тут могут возникнуть проблемы причем у вас) Картинки прийдут не одновременно.
              Проще всего по моему сделать поле query напрмер с value что то вроде вот такого (24x24;48x48;100x100).

              Скрипт может к вечеру набросаю.
              Вообще еще раз повторюсь, что это всего лишь демонстрация. Если хотите увидеть решение в нормальном виде, то меня надо убедить в том, что этим будут пользоваться :)
                0
                Набросал простенький примерчик. =) Как видно, использовать его очень легко.
                  0
                  Я так понял лучше сделать самому скрипт обработчика картинок на своем сервере с помощю ImageMagick или GD. И фотки будут храниться у себя.
                    +1
                    вы итак храните их у себя. Сервис их ресайзит и высылает вам.
                    Если есть возможность ресайзить самостоятельно, то наверное лучше сделать так. =)
                0
                Не проверял — ImageMagick используете?

                Все хотел им воспользоваться, ибо тормознутость GD для PHP жутко раздражает. Но не хватает знаний, чтобы сделать безопасным использование сайта и отключение safe mode, ибо иначе по-моему не разрешить выполнение exec и system команд.
                  0
                  В этой реализации GD, imagemagic использую на самом sjpg.ru для ресайза. ImageMagic несомненно лучше GD, но для промышленных масштабов, я бы поискал другой вариант, или написал своё по мотивам ImageMagick'a. А пока провожу исследование, а надо ли, вообще? =)
                    0
                    Я конечно не гуру оптимизации, но для хоть сколько-то публичного использования GD не катит ну никак, слишком уж медленно.
                      0
                      Я с вами согласен. Это всеголишь демонстрация идеи. Понравилась, решил попробовать и показать другим, пока все не забыли :)
                      0
                      Не думаю что есть большая нужда в подобном сервисе.
                        0
                        Пока гулял сегодня тоже думал где это можно использовать и сильно не придумал :) Разве что как схему — проект тут, а о фотках думает второй сервер.
                        Но так думаю и без того много где работает.
                    0
                    Liq, оперативно Вы :) Протестирую сегодня
                      +2
                      Паша Дуров сделал такое на стороне клиента с помощью 10го флеша…
                        0
                        Можно подробнее как? ;)
                        0
                        Warning: imagejpeg(): 11 is not a valid Image resource in /home/sjpghee/public_html/remoteupload.php on line 111

                        Warning: imagedestroy(): 11 is not a valid Image resource in /home/sjpghee/public_html/remoteupload.php on line 112

                        Warning: Cannot modify header information — headers already sent by (output started at /home/sjpghee/public_html/remoteupload.php:111) in /home/sjpghee/public_html/remoteupload.php on line 127
                        uploading file
                        uploading complite
                          0
                          Говорю же просто демка =) не удивлен если чесно :)
                          –1
                          На гугл-апенжин надо такое делать

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое