Преобразование tga to jpg

zoh

Новичок
Преобразование tga to jpg

Всем привет!
Помогите с кодом.

PHP:
function imagecreatefromtga ( $filename, $return_array = 0 )
{
    $handle = fopen ( $filename, 'rb' );
    $data = fread ( $handle, filesize( $filename ) );
    fclose ( $handle );
    
    $pointer = 18;
    $x = 0;
    $y = 0;
    $w = base_convert ( bin2hex ( strrev ( substr ( $data, 12, 2 ) ) ), 16, 10 );
    $h = base_convert ( bin2hex ( strrev ( substr ( $data, 14, 2 ) ) ), 16, 10 );
    $img = imagecreatetruecolor( $w, $h );

    while ( $pointer < strlen ( $data ) )
    {
        imagesetpixel ( $img, $x, $y, base_convert ( bin2hex ( strrev ( substr ( $data, $pointer, 3 ) ) ), 16, 10 ) );
        $x++;

        if ($x == $w)
        {
            $y++;
            $x=0;
        }

        $pointer += 3;
    }
    
    if ( $return_array )
        return array ( $img, $w, $h );
    else
        return $img;
}

$resource_image = imagecreatefromtga ( "source_image.tga" );

// Declare the content-type as a JPEG image.
header ( 'Content-type: image/jpeg' );

// Convert the image to JPEG for smaller file size and compatability
imagejpeg ( $resource_image, NULL, 100 );
imagedestroy ( $resource_image );
В иотге выводиться мягко говоря не то что нужно
Вот
 

Фанат

oncle terrible
Команда форума
ты полагаешь, что здесь через одного сидят специалисты по формату tga, которые помнят его на память? ;-)
 

Фанат

oncle terrible
Команда форума
FractalizeR, вообще-то, в нем написано. читать tga файл в переменную, из неё доставать информацию о каждом пикселе, и попиксельно же формировать PHP image
 

SiMM

Новичок
> здесь через одного сидят специалисты по формату tga
Даже если сидели бы - первоисточник надо приводить.

Мельком взглянув на исходник и погуглив возникает ощущение, что исходная картинка - 32хбитная TGA, приведённый же выше код работает с 24хбитным TGA. И уж что совершенно очевидно - приведённый код понятия не имеет об RLE.
http://www.gamedev.ru/articles/?id=70116

Почему топикстартер не мог сам погуглить - вопрос остаётся открытым.

-~{}~ 30.01.08 07:19:

> 32хбитная TGA
А может и не 32х.
http://ru.wikipedia.org/wiki/TGA
 

zoh

Новичок
Да спасибо.

Simm, ты думаешь что мне легче зарегистрироваться на форуме чем поискать на гугле?
Конечно я искал на гугле и не один раз.
Ладно буду разбираться.
 
Сверху