/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
behandling af BMP filer
Fra : Birger Sørensen


Dato : 27-04-11 15:14

Er der nogen der har en fornuftig
imagecreatefrombmp() ?

Jeg er ved at opfinde en side, hvor jeg kan uploade alle vores billede
( htttp://bbsorensen.com/slide/ - den viser dem).
Admin siden, converterer uploaded gif'er og png'er til jpg'er, og jeg
ville godt kunne gøre det samme med BMP'er. Men der findes ikke nogen
indbygget imagecreatefrombmp() ?
Der findes masser af andre formater - men ikke noget BMP.
De billeder jeg har i bmp format, er mestendels screendumps. Jeg kunne
åbne dem i et billedbehandlingsprogram, og gemme dem som jpg. Det er
lidt upraktisk, men virker fint.

Jeg har fundet et par forslag til hjemmestrikkede imagecreatefrombmp()
- der alle konsekvent ændrer rødt til grønt og grønt til blåt. Og det
ser meget psykadelisk ud, men er ikke helt det jeg har brug for...

Kunne måske også godt lide at vide, hvad der egentlig er galt. Mit
grafikprogram (paintdotnet) læser fint filerne med de rigtige farver.
Så hvis nogen ved hvorfor, eller kan genkende problemet...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



 
 
Andreas Andersen (27-04-2011)
Kommentar
Fra : Andreas Andersen


Dato : 27-04-11 15:57

Den 27-04-2011 16:14, Birger Sørensen skrev:
> Er der nogen der har en fornuftig
> imagecreatefrombmp() ?
>
> Jeg er ved at opfinde en side, hvor jeg kan uploade alle vores billede (
> htttp://bbsorensen.com/slide/ - den viser dem).
> Admin siden, converterer uploaded gif'er og png'er til jpg'er, og jeg
> ville godt kunne gøre det samme med BMP'er. Men der findes ikke nogen
> indbygget imagecreatefrombmp() ?
> Der findes masser af andre formater - men ikke noget BMP.
> De billeder jeg har i bmp format, er mestendels screendumps. Jeg kunne
> åbne dem i et billedbehandlingsprogram, og gemme dem som jpg. Det er
> lidt upraktisk, men virker fint.
>
> Jeg har fundet et par forslag til hjemmestrikkede imagecreatefrombmp() -
> der alle konsekvent ændrer rødt til grønt og grønt til blåt. Og det ser
> meget psykadelisk ud, men er ikke helt det jeg har brug for...

Hvilken slags maskine kører du det på? Little endian eller big endian?
Det har betydning for, hvordan grupper af bytes bliver læst ind. BMP
skal være little endian, men hvis man så forsøger at læse det på en big
endian-maskine, bliver bytesene vendt rundt, og det kunne jo godt
resultere i ombyttede farver...

--
Andreas

Birger Sørensen (27-04-2011)
Kommentar
Fra : Birger Sørensen


Dato : 27-04-11 16:35

Følgende er skrevet af Andreas Andersen:
> Hvilken slags maskine kører du det på? Little endian eller big endian? Det
> har betydning for, hvordan grupper af bytes bliver læst ind. BMP skal være
> little endian, men hvis man så forsøger at læse det på en big endian-maskine,
> bliver bytesene vendt rundt, og det kunne jo godt resultere i ombyttede
> farver...

Sitet er hostet hos servage, OS er linux, og serveren Apache 20051115 -
men om det er store eller små indianere, kan jeg ikke se...

Har funderet at rode med koden, for der arbejdes temmelig meget med
paletten kan jeg se.
Billedet er godt nok, som sådan.
Og de første 54-55 bytes læses og fortolkes rigtigt - så jeg ville
egentlig tro, at hvis det var det, der var problemet, ville mange andre
ting gå galt, inden man nåede til paletten..

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Andreas Andersen (27-04-2011)
Kommentar
Fra : Andreas Andersen


Dato : 27-04-11 16:55

Den 27-04-2011 17:35, Birger Sørensen skrev:
> Følgende er skrevet af Andreas Andersen:
>> Hvilken slags maskine kører du det på? Little endian eller big endian?
>> Det har betydning for, hvordan grupper af bytes bliver læst ind. BMP
>> skal være little endian, men hvis man så forsøger at læse det på en
>> big endian-maskine, bliver bytesene vendt rundt, og det kunne jo godt
>> resultere i ombyttede farver...
>
> Sitet er hostet hos servage, OS er linux, og serveren Apache 20051115 -
> men om det er store eller små indianere, kan jeg ikke se...
>
> Har funderet at rode med koden, for der arbejdes temmelig meget med
> paletten kan jeg se.
> Billedet er godt nok, som sådan.
> Og de første 54-55 bytes læses og fortolkes rigtigt - så jeg ville
> egentlig tro, at hvis det var det, der var problemet, ville mange andre
> ting gå galt, inden man nåede til paletten..

Det skulle man synes. Jeg forsøgte lige at downloade nogle af de
hjemmelavede imagecreatefrombmp, der ligger på nettet, men jeg kunne
ikke få nogen af dem til at virke på Wamp og Windows 7 (de genererede
billeder har fejl af en art), så de virker åbenbart kun under de helt
rigtige forhold. Noget af koden i den ene jeg hentede ser sådan ud:

$a = ord($str[0]);
$b = ord($str[1]);
$c = ord($str[2]);
$pixel = $c*256*256 + $b*256 + $a;
imagesetpixel($img, $x, $y, $pixel);

Din må have noget tilsvarende, og der kunne man jo eksperimentere lidt
med at bytte rundt på $a, $b og $c.

--
Andreas

Birger Sørensen (27-04-2011)
Kommentar
Fra : Birger Sørensen


Dato : 27-04-11 20:30

Andreas Andersen udtrykte præcist:

> $a = ord($str[0]);
> $b = ord($str[1]);
> $c = ord($str[2]);
> $pixel = $c*256*256 + $b*256 + $a;
> imagesetpixel($img, $x, $y, $pixel);
>
> Din må have noget tilsvarende, og der kunne man jo eksperimentere lidt med at
> bytte rundt på $a, $b og $c.

   $a = ord($str[0]);   // grøn
   $b = ord($str[1]);   // rød
   $c = ord($str[2]);   // blå
   return $b*256*256 + $a*256 + $c;

så vises det rigtigt her.

Men har ellers fundet en anden (der godt nok kun kan indlæse og ikke
gemme bmp), som har samme problem, men ellers er mere overskuelig, som
jeg har leget med.
Kan poste den, hvis nogen er interesseret.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (28-04-2011)
Kommentar
Fra : Birger Sørensen


Dato : 28-04-11 11:08

Birger Sørensen kom med denne ide:
> Andreas Andersen udtrykte præcist:
>
>> $a = ord($str[0]);
>> $b = ord($str[1]);
>> $c = ord($str[2]);
>> $pixel = $c*256*256 + $b*256 + $a;
>> imagesetpixel($img, $x, $y, $pixel);
>>
>> Din må have noget tilsvarende, og der kunne man jo eksperimentere lidt med
>> at bytte rundt på $a, $b og $c.
>
>    $a = ord($str[0]);   // grøn
>    $b = ord($str[1]);   // rød
>    $c = ord($str[2]);   // blå
>    return $b*256*256 + $a*256 + $c;
>
> så vises det rigtigt her.
>
> Men har ellers fundet en anden (der godt nok kun kan indlæse og ikke gemme
> bmp), som har samme problem, men ellers er mere overskuelig, som jeg har
> leget med.
> Kan poste den, hvis nogen er interesseret.
>
> Birger

Og det viser sig så, at det er mine billeder der har et problem.
De er "taget" med PrintScreen funktionen under udførelsen af et spil -
GuildWars - men jeg kan ikke vide om programmet har noget at gøre med
det. (Jeg kan i spillet vælge om jeg vil gemme som bmp eller jpg, så
det har det formentlig).
Jeg producerede et 24-bit bmp med paintdotnet, og det bliver læst
rigtigt, med de forhåndenværende løsninger - men GuildWars billederne
bliver farvelagt forkert.
Har fræset header informationer etc., men kan ikke finde forskellen.
En dag lykkes det nok... Der må jo være en forklaring, når paintdotnet
kan læse dem rigtigt...

Så til det her brug, modificerede jeg så en udgave, fundet på php.net.
Den skulle virke på op til 24bit bmp - jeg har ikke set andet, men
heller ikke testst...
(og BMP'er kan så i dag have 32 bit også, men det må nødvendigvis gå
galt - der er kun mulighed for 1, 4, 8 16 og 24 bit).

Koden kan ifndes her
http://bbsorensen.com/slide/bmp/read_bmp.php.txt

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Chano Andersen (29-04-2011)
Kommentar
Fra : Chano Andersen


Dato : 29-04-11 11:36

Den 28-04-2011 12:07, Birger Sørensen skrev:
> Og det viser sig så, at det er mine billeder der har et problem.
> De er "taget" med PrintScreen funktionen under udførelsen af et spil -
> GuildWars - men jeg kan ikke vide om programmet har noget at gøre med
> det. (Jeg kan i spillet vælge om jeg vil gemme som bmp eller jpg, så det
> har det formentlig).

Er der nogen god grund til, at det absolut SKAL gemmes i BMP, når du har
muligheden for at skifte det til JPG i stedet?

- Chano Andersen

Birger Sørensen (29-04-2011)
Kommentar
Fra : Birger Sørensen


Dato : 29-04-11 14:20

Chano Andersen skrev den 29-04-2011:
> Den 28-04-2011 12:07, Birger Sørensen skrev:
>> Og det viser sig så, at det er mine billeder der har et problem.
>> De er "taget" med PrintScreen funktionen under udførelsen af et spil -
>> GuildWars - men jeg kan ikke vide om programmet har noget at gøre med
>> det. (Jeg kan i spillet vælge om jeg vil gemme som bmp eller jpg, så det
>> har det formentlig).
>
> Er der nogen god grund til, at det absolut SKAL gemmes i BMP, når du har
> muligheden for at skifte det til JPG i stedet?
>
> - Chano Andersen

Ja.
BMP'er fylder aht. - lidt over 3Mb.
Men vi bruger dem til at klippe ud af, laver gif'er og bruger dem til
mange sjove ting - syntes vi selv i hvert fald ^^
Men hvis vi gemmer i jpg, flyder farverne sammen, så udklipningen er
umulig - i bedste fald med et meget ringe resultat.
Og det med at vælge mellem bmp/jpg, er ikke en "on the fly" operation,
men noget man vælger at ændre ved login, eller i hvert fald før man
begynder at spille.
Og tanken var også at bruge nogen af alle de mange billede vi
efterhånden har, uden at være nødt til at kopiere eksisterende bmp'er
til jpg'er først.

Birger.

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kasper Johansen (08-05-2011)
Kommentar
Fra : Kasper Johansen


Dato : 08-05-11 11:15

On 04/27/2011 04:14 PM, Birger Sørensen wrote:
> Er der nogen der har en fornuftig
> imagecreatefrombmp() ?

Se følgende PHP fil med imagebmp() og imagecreatefrombmp() funktioner.

http://rsslounge.googlecode.com/svn-history/r146/trunk/library/WideImage/vendor/JPEXS/bmp.php


--
Regards
Kasper Johansen

Birger Sørensen (08-05-2011)
Kommentar
Fra : Birger Sørensen


Dato : 08-05-11 14:07

Kasper Johansen kom med denne ide:
> On 04/27/2011 04:14 PM, Birger Sørensen wrote:
>> Er der nogen der har en fornuftig
>> imagecreatefrombmp() ?
>
> Se følgende PHP fil med imagebmp() og imagecreatefrombmp() funktioner.
>
> http://rsslounge.googlecode.com/svn-history/r146/trunk/library/WideImage/vendor/JPEXS/bmp.php

Thx.
Den skal helt klart studeres.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177415
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste