|
|
|
@ -1294,26 +1294,11 @@ PHPAPI int php_getimagetype(php_stream * stream, char *filetype TSRMLS_DC) |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
/* {{{ proto array getimagesize(string imagefile [, array info]) |
|
|
|
Get the size of an image as 4-element array */ |
|
|
|
PHP_FUNCTION(getimagesize) |
|
|
|
static void php_getimagesize_from_stream(php_stream *stream, zval **info, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */ |
|
|
|
{ |
|
|
|
zval **info = NULL; |
|
|
|
char *arg1, *temp; |
|
|
|
int arg1_len, itype = 0, argc = ZEND_NUM_ARGS(); |
|
|
|
struct gfxinfo *result = NULL; |
|
|
|
php_stream * stream = NULL; |
|
|
|
|
|
|
|
if (zend_parse_parameters(argc TSRMLS_CC, "s|Z", &arg1, &arg1_len, &info) == FAILURE) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (argc == 2) { |
|
|
|
zval_dtor(*info); |
|
|
|
array_init(*info); |
|
|
|
} |
|
|
|
|
|
|
|
stream = php_stream_open_wrapper(arg1, "rb", STREAM_MUST_SEEK|REPORT_ERRORS|IGNORE_PATH, NULL); |
|
|
|
|
|
|
|
if (!stream) { |
|
|
|
RETURN_FALSE; |
|
|
|
@ -1379,8 +1364,6 @@ PHP_FUNCTION(getimagesize) |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
php_stream_close(stream); |
|
|
|
|
|
|
|
if (result) { |
|
|
|
array_init(return_value); |
|
|
|
add_index_long(return_value, 0, result->width); |
|
|
|
@ -1403,6 +1386,56 @@ PHP_FUNCTION(getimagesize) |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
#define FROM_DATA 0 |
|
|
|
#define FROM_PATH 1 |
|
|
|
|
|
|
|
static void php_getimagesize_from_any(INTERNAL_FUNCTION_PARAMETERS, int mode) { /* {{{ */ |
|
|
|
zval **info = NULL; |
|
|
|
php_stream *stream = NULL; |
|
|
|
char *input; |
|
|
|
int input_len; |
|
|
|
const int argc = ZEND_NUM_ARGS(); |
|
|
|
|
|
|
|
if (zend_parse_parameters(argc TSRMLS_CC, "s|Z", &input, &input_len, &info) == FAILURE) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (argc == 2) { |
|
|
|
zval_dtor(*info); |
|
|
|
array_init(*info); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (mode == FROM_PATH) { |
|
|
|
stream = php_stream_open_wrapper(input, "rb", STREAM_MUST_SEEK|REPORT_ERRORS|IGNORE_PATH, NULL); |
|
|
|
} else { |
|
|
|
stream = php_stream_memory_open(TEMP_STREAM_READONLY, input, input_len); |
|
|
|
} |
|
|
|
|
|
|
|
if (!stream) { |
|
|
|
RETURN_FALSE; |
|
|
|
} |
|
|
|
|
|
|
|
php_getimagesize_from_stream(stream, info, INTERNAL_FUNCTION_PARAM_PASSTHRU); |
|
|
|
php_stream_close(stream); |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
/* {{{ proto array getimagesize(string imagefile [, array info]) |
|
|
|
Get the size of an image as 4-element array */ |
|
|
|
PHP_FUNCTION(getimagesize) |
|
|
|
{ |
|
|
|
php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_PATH); |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
/* {{{ proto array getimagesizefromstring(string data [, array info]) |
|
|
|
Get the size of an image as 4-element array */ |
|
|
|
PHP_FUNCTION(getimagesizefromstring) |
|
|
|
{ |
|
|
|
php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_DATA); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* Local variables: |
|
|
|
* tab-width: 4 |
|
|
|
|