За последние 24 часа нас посетил 15841 программист и 1630 роботов. Сейчас ищут 926 программистов ...

HEX 2 JPG

Тема в разделе "Обработка изображений средствами PHP", создана пользователем volkoff_kos, 19 авг 2009.

  1. volkoff_kos

    volkoff_kos Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    2
    Симпатии:
    0
    есть проблема, есть БД, в которой изображения зашифронаны по типу
    0xFFD8FFE000104A46494600010101004800480000FFDB0043000503040...

    задача: сделать из этого jpg изображение и вывести его...вопрос, как? не могу найти...
     
  2. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    0xFFD8FFE0 - это, по моему, и есть типа jpeg (чисто для запоминания: http://www.ffd8.org/ )).
    Короче, сдается мне, что если все вот это сохранить в бинарном фомате, а потом сделать расширение jpeg - можешь смотреть картинку))
     
  3. volkoff_kos

    volkoff_kos Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    2
    Симпатии:
    0
    как мне сохранить это в бинарно?
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    imnagecreatefromstring()
     
  5. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    ох.. я еще не волшебник (С).. тут есть поумнее..
    Не знаю, какой размер этого "числа", но мне кажется неразумным даже выяснять)).
    Ну, хорошо, можно считывать вять это текст (кроме начального 0x) и в цикле писать в файл побайтно. Каждые два символа из той строки, которую ты привел - это один байт, записанный в hex.
    Короче, идешь по этому тексту в цикле, берешь каждые два символа и делаешь примерно так:
    <?php
    $s="41"; // это и есть два байта из текста, вместо константы бери в цикле нужные символы
    sscanf($s,"%x",$c);
    $d=Chr($c);
    echo $d; // это не нужно, я для проверки сделал, для 41 будет A
    fwrite($f,$d);
    ?>
    Здесь наверняка сделают это в тыщу раз быстрее и проще..)) И не исключено, что в БД есть функция бинарного сохранения. Может, оно и есть бинарно внутри, но тебе показывают в гексе..
     
  6. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    О! ну я ж говорил)).
    Спасибо от меня тож..