svn: /php/php-src/trunk/ext/standard/ basic_functions.c image.c php_image.h
| From: | Pierre Joye | Date: | Wed, 05 May 2010 13:37:40 +0000 |
| Subject: | svn: /php/php-src/trunk/ext/standard/ basic_functions.c image.c php_image.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-62554@lists.php.net to get a copy of this message | ||
pajoye Wed, 05 May 2010 13:37:40 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=299021
Log:
- #51063, implement getimagesizefromstring
Bug: http://bugs.php.net/51063 (Assigned) Add
getimagesizefromstring
Changed paths:
U php/php-src/trunk/ext/standard/basic_functions.c
U php/php-src/trunk/ext/standard/image.c
U php/php-src/trunk/ext/standard/php_image.h
Modified: php/php-src/trunk/ext/standard/basic_functions.c
===================================================================
--- php/php-src/trunk/ext/standard/basic_functions.c 2010-05-05 13:29:12 UTC (rev 299020)
+++ php/php-src/trunk/ext/standard/basic_functions.c 2010-05-05 13:37:40 UTC (rev 299021)
@@ -2690,6 +2690,7 @@
PHP_FE(iptcparse, arginfo_iptcparse)
PHP_FE(iptcembed, arginfo_iptcembed)
PHP_FE(getimagesize, arginfo_getimagesize)
+ PHP_FE(getimagesizefromstring, arginfo_getimagesize)
PHP_FE(image_type_to_mime_type, arginfo_image_type_to_mime_type)
PHP_FE(image_type_to_extension, arginfo_image_type_to_extension)
Modified: php/php-src/trunk/ext/standard/image.c
===================================================================
--- php/php-src/trunk/ext/standard/image.c 2010-05-05 13:29:12 UTC (rev 299020)
+++ php/php-src/trunk/ext/standard/image.c 2010-05-05 13:37:40 UTC (rev 299021)
@@ -1294,27 +1294,12 @@
}
/* }}} */
-/* {{{ 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 @@
break;
}
- php_stream_close(stream);
-
if (result) {
array_init(return_value);
add_index_long(return_value, 0, result->width);
@@ -1403,6 +1386,56 @@
}
/* }}} */
+#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
Modified: php/php-src/trunk/ext/standard/php_image.h
===================================================================
--- php/php-src/trunk/ext/standard/php_image.h 2010-05-05 13:29:12 UTC (rev 299020)
+++ php/php-src/trunk/ext/standard/php_image.h 2010-05-05 13:37:40 UTC (rev 299021)
@@ -23,6 +23,7 @@
#define PHP_IMAGE_H
PHP_FUNCTION(getimagesize);
+PHP_FUNCTION(getimagesizefromstring);
PHP_FUNCTION(image_type_to_mime_type);
PHP_FUNCTION(image_type_to_extension);