Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Неправильно собирается картинка на сервере. (http://www.flasher.ru/forum/showthread.php?t=125635)

dmitriev 28.05.2009 18:56

Неправильно собирается картинка на сервере.
 
Всем привет!

У меня есть желание сохранять некоторый мувик как картинку. Нашёл на форуме вполне рабочий код, ну и использовал его. Выглядит он так:
1. Во флеше
Код AS1/AS2:

function sendPicure()
{
        var pixels:Array = [];
        var bmd:BitmapData = new BitmapData(1000, 369);
        var my_matrix:Matrix = new Matrix();
        my_matrix.scale(1, 1);
        bmd.draw(this.dom, my_matrix);
 
        var w:Number = bmd.width, tmp;
        var h:Number = bmd.height;
 
        for(var i=0;i<=w;i++)
        {
                for(var n=0;n<=h;n++)
                {
                        tmp = bmd.getPixel32(i, n).toString(16);
                        pixels.push(tmp.substr(1))
                }
        }
        var output:LoadVars = new LoadVars()
        output.img = pixels.toString()
        output.height = h
        output.width = w;
        output.send("show.php", "output", "POST");
}

2. PHP скрипт который всё это собирает
PHP код:

//If GD library is not installed, say sorry

    
if(!function_exists("imagecreate")) die("Sorry, you need GD library to run this example");
    
//Capture Post data
    
$data explode(","$_POST['img']);
    
$width $_POST['width'];
    
$height $_POST['height'];
    
//Allocate image
    
$image=(function_exists("imagecreatetruecolor"))?imagecreatetruecolor$width ,$height ):imagecreate$width ,$height );
    
$background imagecolorallocate$image ,);
    
//Copy pixels
    
$i 0;
    for(
$x=0$x<=$width$x++){
        for(
$y=0$y<=$height$y++){
            
$r 255-hexdec("0X".substr$data[$i] , )); 
            
$g 255-hexdec("0x".substr$data[$i] , )); 
            
$b 255-hexdec("0x".substr$data[$i++] , ));
            
$color =  ($r << 16) | ($g << 8) | $b
            
imagesetpixel $image $x $y $color );
        }
    }
    
//Output image and clean
    
header"Content-type: image/jpeg" );
    
ImageJPEG$image );
    
imagedestroy$image ); 

Картинка собирается, но неправильно, а вот так:
[IMG]http://img34.**************/img34/3387/tmpc.jpg[/IMG]

Кто нибудь знает в чем может быть причина? Я был бы очень благодарен.

iNils 28.05.2009 19:09

Замените getPixel32 на getPixel

dmitriev 28.05.2009 19:25

Воспользовался вашим советм, вот результат:
[IMG]http://img40.**************/img40/9904/tmp2.jpg[/IMG]
Может быть и в PHP теперь что-то изменить нужно?

etc 28.05.2009 19:31

Похоже автор скрипта забыл, что нужно добивать нулевые значения триады RGB…

iNils 28.05.2009 19:36

Кстати, использовать toString(16) не то что не нужно, а вредно. Передавайте непосредственно само число, оно будет весить меньше, чем генерируемая строка.

dmitriev 28.05.2009 19:39

Подскажите пожалуйста куда и как их нужно добавить.


Часовой пояс GMT +4, время: 19:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.