GD extension billedbehandling - PHP

PHP med GD extension kan oprette og manipulere billeder

GD extension

GD er en extension til PHP med funktioner til at lave billeder.
Før du kan bruge billedbehandlings funktionerne skal GD installeres.
GD er ikke installeret som standard.

Du kan installer GD extension ved at køre PHP installationen igen og tilvælge GD som her i Windows.
PHP 5.3.3 setup GD2 GD library image functions

Hvis du er i tvivl om du har GD installeret så kør følgende kode på din egen computer og kig efter gd.

Hvis du skal bruge GD funktionerne på dit webhotel så kør koden på dit webhotel for at se om GD er installeret der.

Billede 1

Her er noget kode som laver et billede, vælger en tekstfarve, tegner noget tegn og viser billedet direkte i browseren i PNG format.

Udfør koden og se resultatet.

Billede 2

Hvis vi ønsker at gemme billedet som en fil så kan man gøre som her.

Billedformater

Funktionerne imagepng(), imagejpeg() og imagegif () bruges til at outputtet et billede.

Billede 3

I dette eksempel laves et billede ud fra dette billede.
baggrund for knap
Der efter tegnes der noget tekst oven på billedet som man selv kan vælge.

Lad os sige vi gemmer følgende kode i filen "eksempel0024.php".

Prøv koden.

Filen "eksempel0024.php" kan så bruges som billedfil med forskellige resultater som her.
Send
Slet
Frem
Tilbage
Velkommen
Resultatet ovenfor er skabt af følgende kode

På den måde kan man lave mange knapper og let ændre deres tekst.

Billede 4

Her er et "live" eksempel hvor jeg bruger billedet inline i HTML koden så jeg kan vise det her på hjemmesiden uden jeg behøver gemme billedet som en fil.
<img src="data:image/png;base64,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" alt="billede">
Resultatet ovenfor er skabt af følgende kode
billede
Resultatet ovenfor er skabt af følgende kode

Billede 5

Med imagefttext() funktionen kan man skrive tekst med andre fonte end de indbyggede.
Så kan man komme til at skrive danske tegn som æ, ø og å.

Jeg bruger fonten cambria.ttc.

<img src="data:image/png;base64,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goKCuNsDQ4XhJVhRUVFpaWnFxcVnz5797W9/GxoaajQaz549+9VXX3333Xest0skEu3atcvfHMHLly8vKCg4e/bsiy++OGXKFIVCIRKJJk6c+Je//OXMmTP0y+9OZmYm+TkoKGjRokX0apo3wUJerDPkafNdSEjI//7v/06YMIEc4fF460p0Ks4AACAASURBVNat++ijj371q1/hIyqV6q233tJoNPn5+QzDyGQyhNC1a9e+//77goKCkpKStrY2hmFWr17tsQJFUVHRv//973feeedPf/oTx80ihIqLix0OB/nIvZxHa9CIESO82ZsYWt0QGFm3EcMiZ6NKpXrkkUdWr149e/ZsHBjd0NCQlZV14MCB/Px8EoikVqtfeeWV9evXk/0cAoHg008//de//lVXV3f58uVvvvmmoaHB21USExN3797N4YuZMmXKvn37vKXNQwhlZ2dv376dvIpr1qyhy3lyvM/5+fnXr18nzponn3zS5XLFxsaOHDlSKBTef//9WIvHjx+/fft2jUaj1+sdDgcJNA8NDcXBUAaD4bPPPktPT4+IiHjvvfc+/PDDCxcuvPnmmxkZGVevXhUIBLt37540aRI+SyqVpqSkuK8bVlRU9ChVGIfDUV1dTdSEQ5HRf2sQn88fPXo0Pe9jQasbQmjMmDEXL170ZUjAIOd2FiyhULhgwYI1a9YsWrQImwlOp/Orr77as2cPzmkZFRV17733xsbGxsTExMbGhoWF8fn8srKyCRMmkLAguVw+Y8aMlpaWe+6555lnnjl06NBbb71ls9lY10pLS9u4cSOfz//000/37duXm5trMBgiIyNfffXVJ554gjSbN2/eihUrvAUTtLe3Hz169KGHHsIfFyxYQO/4YwmWUqmMiYmJjo4eM2ZMfn5+Zmbm5s2b8Vc6nW7ZsmXEURUSEtLV1RUbG/v2228HBAS0t7cXFBQolUrihBIIBBMnTmxra9u6detdd92VnJx8+PDhf/zjHwihxMREckWn07lz58733nuPHJkxY0aPgRQeEYvFkydPxrNdbzfIwl2DOATLYDC0tLTodDr8ESys24bbU7CSkpLWrFmzYsUK8iuLELpy5cprr70ml8snT568bNmyqKgokUhEn2W1WisrK6urq5OTk+ltH8HBwS0tLQghPp//0EMPxcTEPPPMM2Quo1KpsrOzH3jggba2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" alt="billede">
Resultatet ovenfor er skabt af følgende kode
billede
Resultatet ovenfor er skabt af følgende kode

Screenshot

I PHP manualen står at man kan tage screenshots med imagegrabscreen() og imagegrabwindow().
Det virker kun i Windows står der.

Efter at have prøvet en masse har jeg endelig får det til at virke, men det er ikke så lige til.

Hvis jeg prøver med imagegrabscreen() får jeg et sort billede på 1024x768 (eller 1280x768).
Hvis jeg prøver med imagegrabwindow() får jeg et sort billede på 800x600.
Det er lidt mærkeligt fordi min skærmopløsning er 1366x768.

Hvis man vil tage et screenshot af hele skærmen skulle man kunne bruge følgende kode.
Jeg får bare et sort billede på 1280x768.


For this to work your Apache service must be set to 'Allow service to interact with desktop' otherwise you will just get a blank image. To fix this right-click My Computer, select Manage/Services and Applications/Services - find the apache service (like Apache2) and right-click, select Properties - choose the Log on tab and check the 'Allow service to interact with desktop' checkbox. Restart Apache.
Kilde : brugerkommentar ved imagegrabscreen

Det gøres sådan her.
Windows Apache service monitor tilad tjeneste at fungere interaktivt med Skrivebord

Hvis man vil tage et screenshot med programvinduet (eller programmet kørende i fuldskærm) skulle koden være noget i stil med dette.
Her i Internet Explorer.

Billederne laves umiddelbart fint nok, men de er bare helt sorte og størrelsen er forkert i forhold til min skærmopløsning.

Jeg har prøvet koden på Windows 7 (64 bit) og Windows Vista (32 bit) med samme resultat (sorte billeder).

Efter at have prøvet igen med imagegrabwindow() metoden lykkedes det mig og få taget dette 800 x 600 pixels billede som godt nok viser Internet Explorer vinduet men selve området hvor hjemmesiden skulle have været er stadig sort.
php screenshot med imagegrabwindow og Internet Explorer

...okay hvis com_message_pump() er sat for lavt kan det give sort billede.

...Okay nu har jeg rodet med det noget mere og nu lykkedes det mig og få taget et screenshot.
Det ser ud til at programmet (Internet Explorer) åbner på en anden konto kaldes SYSTEM (NT AUTHORITY/SYSTEM).
(Ser ud til når man køre "iexplore.exe -embedding" så starten explorer uden at man kan se det vindue).
Der kommer så nogen pop-op-beskeder om man vil bruge standardindstillinger og om programmet skal være standard browser og om man vil bruge intranetindstillinger.
Så længde de beskeder er der bliver indholdet vist sort, hvis man kan klikke dem væk så kommer billedet.

php screenshot med imagegrabwindow og Internet Explorer

...
Mere info...
I Tjenester (Kør "services.msc") er der en tjeneste/service som hedder Interactive Services Detection (C:\Windows\System32\UI0Detect.exe).
Når tjenesten startes og man tager screenshot så kommer der sådan en besked her.
Interactive Services Detection
Ved at klikke på "Vis meddelelsen" kan man skifte til SYSTEM kontoen hvor Internet Explorer bliver startet op for at tage screenshotet.

800x600 er åbenbart den standard størrelse Internet Explorer vinduet har når det åben i ikke-maksimeret-tilstand.
1024x768 er åbenbart den standard opløsning skærmen er sat til hvis man aldrig har brugt SYSTEM brugeren.
Hvis man vil bestemme størrelsen på screenshotet kan man køre koden ovenfor uden $browser->Quit(); så lukker browseren ikke når screenshotet er taget.
Så trykker man på CTRL+O (Åbn...) og vælger Gennemse... (det kan tage noget får den kommer videre) find C:\windows og højre klikker på explorer.exe og vælger Åbn.
Så opbygges skrivebordet osv. så du kan bruge start menuen.
Nå nu skulle skærmopløsningen være den samme som din normale konto.
Hvis du vil ændre opløsningen kan du skrifte tilbage med "Returner nu" knappen, skifte opløsning på din normale konto også vælge "Vis meddelse" i Interactive Services Detection vinduet, så sætte skærmopløsning lige så snart du komme på SYSTEM kontoen. Og så kan du skifte tilbage igen og tage dit screenshot.
Interactive Services Detection

---

Hvis du ved mere så kontakt mig gerne da jeg gerne vil bruge det til min hjemmeside.
Browseren skulle jo gerne køre i fuldskærm når billedet blev taget og uden alle de her "Vil du gøre Internet Explorer til standardbrowseren?" osv.

Tryk på start knappen for at se hvad bruger du er logget på som.
start menu brugeren SYSTEM

---

Det lader til at det der skal bruges for at tage screenshots som standard er slået fra i PHP fra version 5.4.5.
Så man skal tilføje følgende i php.ini filen (ellers får man fejlen Fatal error: Class 'COM' not found):


Den fede kant på vinduer, når man er logget på som SYSTEM, skyldes mulighed at der bruges Aero eller Basic tema og at tjenesten Tema er stoppet.

Skriv din kommentar

Spørg mig om hvad som helst
Du kan også skrive direkte til mig på
Stem
Søg
Language

Select English to navigate the website in English. Things like the navigation menu and contact form will be in English, but the main content on each page will not be translated.