Avatar billede oldschool Nybegynder
27. oktober 2007 - 19:35 Der er 6 kommentarer og
1 løsning

Php download jpg

Godaften

jeg sidder og roder med noget jpg export fra flash via php. Det virker helt fint, og det script jeg bruger sørger for at der åbnes et nyt vindue med det billede der er exporteret fra flash.

Men jeg vil gerne have at brugeren bliver "tvunget" til at downloade billedet istedet.

Jeg har blandt andet forsøgt mig med scriptet i denne tråd, men uden held! http://www.eksperten.dk/spm/653516

Det script der behandler date'erne fra flash ser således ud:

<?php

error_reporting(0);
/**
* Get the width and height of the destination image
* from the POST variables and convert them into
* integer values
*/
$w = (int)$_POST['width'];
$h = (int)$_POST['height'];

// create the image with desired width and height

$img = imagecreatetruecolor($w, $h);

// now fill the image with blank color
// do you remember i wont pass the 0xFFFFFF pixels
// from flash?
imagefill($img, 0, 0, 0xFFFFFF);

$rows = 0;
$cols = 0;

// now process every POST variable which
// contains a pixel color
for($rows = 0; $rows < $h; $rows++){
    // convert the string into an array of n elements
    $c_row = explode(",", $_POST['px' . $rows]);
    for($cols = 0; $cols < $w; $cols++){
        // get the single pixel color value
        $value = $c_row[$cols];
        // if value is not empty (empty values are the blank pixels)
        if($value != ""){
            // get the hexadecimal string (must be 6 chars length)
            // so add the missing chars if needed
            $hex = $value;
            while(strlen($hex) < 6){
                $hex = "0" . $hex;
            }
            // convert value from HEX to RGB
            $r = hexdec(substr($hex, 0, 2));
            $g = hexdec(substr($hex, 2, 2));
            $b = hexdec(substr($hex, 4, 2));
            // allocate the new color
            // N.B. teorically if a color was already allocated
            // we dont need to allocate another time
            // but this is only an example
            $test = imagecolorallocate($img, $r, $g, $b);
            // and paste that color into the image
            // at the correct position
            imagesetpixel($img, $cols, $rows, $test);
        }
    }
}

// print out the correct header to the browser
header("Content-type:image/jpeg");
// display the image
imagejpeg($img, "", 90);
?>

Jeg håber der er en der kan lede mig på sporet af en løsning!

Mvh

/Oldschool/
Avatar billede coderdk Praktikant
27. oktober 2007 - 20:31 #1
prøv at udskifte

header("Content-type:image/jpeg");

med

header("Content-type: application/octet-stream");
Avatar billede oldschool Nybegynder
27. oktober 2007 - 20:55 #2
Tak for svar!

Jeg bliver spurgt om at gemme filen nu, men det er pixels.php (som php filen hedder) man gemmer istedet for jpg'en...

Vil det hjælpe at kopiere billedet til en mappe på serveren og give det "rigtigt" navn?
Avatar billede coderdk Praktikant
27. oktober 2007 - 21:43 #3
header("Content-Disposition: attachment; filename=\"".$filnavn."\");

:)
Avatar billede oldschool Nybegynder
27. oktober 2007 - 22:21 #4
Nu prøver den at gemme "resource id #2"

Må indrømme jeg er ret lost i den her. Jeg har bare indsat $img som $filnavn i din linje...
Avatar billede coderdk Praktikant
27. oktober 2007 - 22:33 #5
Du skal ikke gemme $img, du skal gemme filnavnet.
Avatar billede oldschool Nybegynder
27. oktober 2007 - 23:13 #6
Nu gemmer den det givne filnavn som en jpg. (jeg har givet den en ekstension)
Men det gemte billede virker ikke. Den siger corrupted file...
Mange tak for dine svar so far :)
Avatar billede oldschool Nybegynder
12. november 2007 - 20:21 #7
Jeg har fundet ud af, at dette spørgsmål ikke vil kunne løse mit problem helt. har derfor oprettet et bedre beskrevet her: http://www.eksperten.dk/spm/805510

Håber det ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester