Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 041fed9

Browse files
author
s.perevoznyk
committed
Initial import
0 parents commit 041fed9

File tree

296 files changed

+29120
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

296 files changed

+29120
-0
lines changed

‎DelphiFunctions.pas‎

Lines changed: 1181 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
{*******************************************************}
2+
{ PHP4Delphi }
3+
{ PHP - Delphi interface }
4+
{ Author: }
5+
{ Serhiy Perevoznyk }
6+
{ serge_perevoznyk@hotmail.com }
7+
{ http://users.chello.be/ws36637 }
8+
{*******************************************************}
9+
10+
{ $Id: php_jpeg.dpr,v 6.2 02/2006 delphi32 Exp $ }
11+
{$I PHP.INC}
12+
13+
library php_jpeg;
14+
15+
uses
16+
Windows, SysUtils, zendTypes, ZENDAPI, phpTypes, PHPAPI, jpeg, graphics,
17+
Classes;
18+
19+
20+
procedure Bmp2Jpg(ABitmap : TBitmap; AJpeg : TJpegImage);
21+
begin
22+
if not Assigned(ABitmap) then
23+
Exit;
24+
25+
if not Assigned(AJPeg) then
26+
Exit;
27+
28+
AJPeg.Assign(ABitmap);
29+
end;
30+
31+
function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
32+
begin
33+
Result := SUCCESS;
34+
end;
35+
36+
function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
37+
begin
38+
Result := SUCCESS;
39+
end;
40+
41+
procedure php_info_module(zend_module : Pzend_module_entry; TSRMLS_DC : pointer); cdecl;
42+
begin
43+
php_info_print_table_start();
44+
php_info_print_table_row(2, PChar('JPEG support'), PChar('enabled'));
45+
php_info_print_table_end();
46+
end;
47+
48+
function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
49+
begin
50+
RESULT := SUCCESS;
51+
end;
52+
53+
function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
54+
begin
55+
RESULT := SUCCESS;
56+
end;
57+
58+
{$IFDEF PHP510}
59+
procedure convert_bmp_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
60+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
61+
{$ELSE}
62+
procedure convert_bmp_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
63+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
64+
{$ENDIF}
65+
var
66+
bmpName : PChar;
67+
JpgName : PChar;
68+
param : pzval_array;
69+
Bitmap : TBitmap;
70+
Jpg : TJPEGImage;
71+
begin
72+
if ht <> 2 then
73+
begin
74+
zend_wrong_param_count(TSRMLS_DC);
75+
Exit;
76+
end;
77+
78+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
79+
begin
80+
zend_wrong_param_count(TSRMLS_DC);
81+
Exit;
82+
end;
83+
84+
bmpName := param[0]^.value.str.val;
85+
JpgName := param[1]^.value.str.val;
86+
dispose_pzval_array(param);
87+
88+
if not FileExists(bmpName) then
89+
begin
90+
ZVAL_FALSE(return_value);
91+
exit;
92+
end;
93+
94+
try
95+
BitMap := TBitmap.Create;
96+
Bitmap.LoadFromFile(bmpName);
97+
Jpg := TJPegImage.Create;
98+
Bmp2Jpg(Bitmap, Jpg);
99+
Jpg.SaveToFile(JpgName);
100+
ZVAL_TRUE(return_value);
101+
except
102+
ZVAL_FALSE(return_value);
103+
end;
104+
end;
105+
106+
107+
{$IFDEF PHP510}
108+
procedure show_bmp_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
109+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
110+
{$ELSE}
111+
procedure show_bmp_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
112+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
113+
{$ENDIF}
114+
var
115+
bmpName : PChar;
116+
param : pzval_array;
117+
Bitmap : TBitmap;
118+
Jpg : TJPEGImage;
119+
MS : TMemoryStream;
120+
_content_type : PChar;
121+
begin
122+
if ht <> 1 then
123+
begin
124+
zend_wrong_param_count(TSRMLS_DC);
125+
Exit;
126+
end;
127+
128+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
129+
begin
130+
zend_wrong_param_count(TSRMLS_DC);
131+
Exit;
132+
end;
133+
134+
bmpName := param[0]^.value.str.val;
135+
dispose_pzval_array(param);
136+
if not FileExists(bmpName) then
137+
begin
138+
ZVAL_FALSE(return_value);
139+
Exit;
140+
end;
141+
142+
try
143+
BitMap := TBitmap.Create;
144+
Bitmap.LoadFromFile(bmpName);
145+
Jpg := TJPegImage.Create;
146+
Bmp2Jpg(Bitmap, Jpg);
147+
MS := TMemoryStream.Create;
148+
Jpg.SaveToStream(MS);
149+
_content_type := 'Content-type: image/jpeg';
150+
sapi_add_header_ex(_content_type, strlen(_content_type), true, true, TSRMLS_DC);
151+
php_body_write(MS.Memory, MS.Size, TSRMLS_DC);
152+
MS.Free;
153+
ZVAL_TRUE(return_value);
154+
except
155+
ZVAL_FALSE(return_value);
156+
end;
157+
end;
158+
159+
160+
{$IFDEF PHP510}
161+
procedure sign_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
162+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
163+
{$ELSE}
164+
procedure sign_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
165+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
166+
{$ENDIF}
167+
var
168+
JpgName : PChar;
169+
FontName : PChar;
170+
Color : TColor;
171+
Size : integer;
172+
X : integer;
173+
Y : integer;
174+
Sign : PChar;
175+
176+
param : pzval_array;
177+
Jpg : TJPEGImage;
178+
Bmp : TBitmap;
179+
180+
MS : TMemoryStream;
181+
_content_type : PChar;
182+
183+
begin
184+
if ht <> 7 then
185+
begin
186+
zend_wrong_param_count(TSRMLS_DC);
187+
Exit;
188+
end;
189+
190+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
191+
begin
192+
zend_wrong_param_count(TSRMLS_DC);
193+
Exit;
194+
end;
195+
196+
JpgName := param[0]^.value.str.val;
197+
FontName := param[1]^.value.str.val;
198+
Color := param[2]^.value.lval;
199+
Size := param[3]^.value.lval;
200+
X := param[4]^.value.lval;
201+
Y := param[5]^.value.lval;
202+
Sign := param[6]^.value.str.val;
203+
204+
dispose_pzval_array(param);
205+
206+
if not FileExists(JpgName) then
207+
begin
208+
ZVAL_FALSE(return_value);
209+
Exit;
210+
end;
211+
212+
try
213+
Jpg := TJpegImage.Create;
214+
Jpg.LoadFromFile(JpgName);
215+
Bmp := TBitmap.Create;
216+
Bmp.Assign(JPG);
217+
Bmp.Canvas.Font.Name := FontName;
218+
Bmp.Canvas.Font.Size := Size;
219+
Bmp.canvas.Font.Color := Color;
220+
Bmp.Canvas.Pen.Style := psClear;
221+
Bmp.Canvas.Brush.Style := bsClear;
222+
Bmp.Canvas.TextOut(X, Y, Sign);
223+
Jpg.Assign(bmp);
224+
Bmp.Free;
225+
MS := TMemoryStream.Create;
226+
Jpg.SaveToStream(MS);
227+
_content_type := 'Content-type: image/jpeg';
228+
sapi_add_header_ex(_content_type, strlen(_content_type), true, true, TSRMLS_DC);
229+
php_body_write(MS.Memory, MS.Size, TSRMLS_DC);
230+
MS.Free;
231+
ZVAL_TRUE(return_value);
232+
except
233+
ZVAL_FALSE(return_value);
234+
end;
235+
end;
236+
237+
238+
var
239+
moduleEntry : Tzend_module_entry;
240+
module_entry_table : array[0..3] of zend_function_entry;
241+
242+
243+
function get_module : Pzend_module_entry; cdecl;
244+
begin
245+
if not PHPLoaded then
246+
LoadPHP;
247+
ModuleEntry.size := sizeof(Tzend_module_entry);
248+
ModuleEntry.zend_api := ZEND_MODULE_API_NO;
249+
ModuleEntry.zts := USING_ZTS;
250+
ModuleEntry.Name := 'php_jpeg';
251+
ModuleEntry.version := '1.0';
252+
ModuleEntry.module_startup_func := @minit;
253+
ModuleEntry.module_shutdown_func := @mshutdown;
254+
ModuleEntry.request_startup_func := @rinit;
255+
ModuleEntry.request_shutdown_func := @rshutdown;
256+
ModuleEntry.info_func := @php_info_module;
257+
258+
Module_entry_table[0].fname := 'convert_bmp_jpeg';
259+
Module_entry_table[0].handler := @convert_bmp_jpeg;
260+
261+
Module_entry_table[1].fname := 'show_bmp_jpeg';
262+
Module_entry_table[1].handler := @show_bmp_jpeg;
263+
264+
Module_entry_table[2].fname := 'sign_jpeg';
265+
Module_entry_table[2].handler := @sign_jpeg;
266+
267+
ModuleEntry.functions := @module_entry_table[0];
268+
ModuleEntry._type := MODULE_PERSISTENT;
269+
Result := @ModuleEntry;
270+
end;
271+
272+
273+
274+
exports
275+
get_module;
276+
277+
end.
278+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?
2+
$j = $_SERVER['DOCUMENT_ROOT'] . "/test.jpg";
3+
$b = $_SERVER['DOCUMENT_ROOT'] . "/test.bmp";
4+
5+
//show_bmp_jpeg($b);
6+
7+
//convert_bmp_jpeg($b, $j);
8+
9+
$color = 0xFFFFFF;
10+
$fontname = "Arial Bold";
11+
$fontsize = 10;
12+
$x = 10;
13+
$y = 10;
14+
sign_jpeg($j, $fontname, $color, $fontsize, $x, $y, "Signed by Me");
15+
16+
?>
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
library phpencoder;
2+
3+
{$I PHP.INC}
4+
5+
uses
6+
Windows, SysUtils, zendTypes, ZENDAPI, phpTypes, PHPAPI, Classes;
7+
8+
9+
function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
10+
begin
11+
Result := SUCCESS;
12+
end;
13+
14+
function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
15+
begin
16+
Result := SUCCESS;
17+
end;
18+
19+
procedure php_info_module(zend_module : Pzend_module_entry; TSRMLS_DC : pointer); cdecl;
20+
begin
21+
php_info_print_table_start();
22+
php_info_print_table_row(2, PChar('php encryption'), PChar('enabled'));
23+
php_info_print_table_end();
24+
end;
25+
26+
function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
27+
begin
28+
RESULT := SUCCESS;
29+
end;
30+
31+
function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
32+
begin
33+
RESULT := SUCCESS;
34+
end;
35+
36+
{$IFDEF PHP510}
37+
procedure ex_dec(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
38+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
39+
{$ELSE}
40+
procedure ex_dec(ht : integer; return_value : pzval; this_ptr : pzval;
41+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
42+
{$ENDIF}
43+
var
44+
FileName : PChar;
45+
S : TFileStream;
46+
st : string;
47+
i : integer;
48+
begin
49+
FileName := zend_get_executed_filename(TSRMLS_DC);
50+
51+
S := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
52+
SetLength(St, S.Size);
53+
S.Read(St[1], S.Size);
54+
S.Free;
55+
i := pos('?>', St);
56+
Delete(St, 1, I + 1);
57+
//Now st contains encrypted string
58+
//encryption is very simple: xor
59+
for i := 1 to length(st) do
60+
if (st[i] <> #10) and (st[i] <> #13) then
61+
st[i] := chr ( ord(st[i]) xor 8);
62+
zend_eval_string(PChar(st), nil, 'decoded', TSRMLS_DC);
63+
end;
64+
65+
66+
var
67+
moduleEntry : Tzend_module_entry;
68+
module_entry_table : array[0..1] of zend_function_entry;
69+
70+
71+
function get_module : Pzend_module_entry; cdecl;
72+
begin
73+
if not PHPLoaded then
74+
LoadPHP;
75+
ModuleEntry.size := sizeof(Tzend_module_entry);
76+
ModuleEntry.zend_api := ZEND_MODULE_API_NO;
77+
ModuleEntry.zts := USING_ZTS;
78+
ModuleEntry.Name := 'phpencoder';
79+
ModuleEntry.version := '0.0';
80+
ModuleEntry.module_startup_func := @minit;
81+
ModuleEntry.module_shutdown_func := @mshutdown;
82+
ModuleEntry.request_startup_func := @rinit;
83+
ModuleEntry.request_shutdown_func := @rshutdown;
84+
ModuleEntry.info_func := @php_info_module;
85+
Module_entry_table[0].fname := 'ex_dec';
86+
Module_entry_table[0].handler := @ex_dec;
87+
ModuleEntry.functions := @module_entry_table[0];
88+
ModuleEntry._type := MODULE_PERSISTENT;
89+
Result := @ModuleEntry;
90+
end;
91+
92+
93+
94+
exports
95+
get_module;
96+
97+
end.
98+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /