cvs: php4 /ext/standard basic_functions.c image.c php_image.h
| From: | Marcus B�rger | Date: | Sat, 22 Jun 2002 18:14:39 +0000 |
| Subject: | cvs: php4 /ext/standard basic_functions.c image.c php_image.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-12446@lists.php.net to get a copy of this message | ||
helly Sat Jun 22 14:14:39 2002 EDT
Modified files:
/php4/ext/standard basic_functions.c image.c php_image.h
Log:
@GetImageSize now returns additional index 'MimeType' and new function
@imagetype2mimetype to convert php imagetypes to mime-types. (Marcus)
#the reason why i export php_imagetype2mimetype is that i use that for
#exif, too. Followup example will explain why.
Index: php4/ext/standard/basic_functions.c
diff -u php4/ext/standard/basic_functions.c:1.479 php4/ext/standard/basic_functions.c:1.480
--- php4/ext/standard/basic_functions.c:1.479 Wed Jun 12 13:25:48 2002
+++ php4/ext/standard/basic_functions.c Sat Jun 22 14:14:39 2002
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.479 2002/06/12 17:25:48 sniper Exp $ */
+/* $Id: basic_functions.c,v 1.480 2002/06/22 18:14:39 helly Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -281,6 +281,7 @@
PHP_FE(iptcparse, NULL)
PHP_FE(iptcembed, NULL)
PHP_FE(getimagesize, second_args_force_ref)
+ PHP_FE(imagetype2mimetype, NULL)
PHP_FE(phpinfo, NULL)
PHP_FE(phpversion, NULL)
Index: php4/ext/standard/image.c
diff -u php4/ext/standard/image.c:1.57 php4/ext/standard/image.c:1.58
--- php4/ext/standard/image.c:1.57 Sat Jun 22 13:09:28 2002
+++ php4/ext/standard/image.c Sat Jun 22 14:14:39 2002
@@ -16,7 +16,7 @@
| Marcus Boerger <helly@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: image.c,v 1.57 2002/06/22 17:09:28 helly Exp $ */
+/* $Id: image.c,v 1.58 2002/06/22 18:14:39 helly Exp $ */
/*
* Based on Daniel Schmitt's imageinfo.c which carried the following
* Copyright notice.
@@ -65,7 +65,7 @@
PHPAPI const char php_sig_tif_ii[4] = {'I','I', (char)0x2A, (char)0x00};
PHPAPI const char php_sig_tif_mm[4] = {'M','M', (char)0x00, (char)0x2A};
PHPAPI const char php_sig_jpc[3] = {(char)0xFF, (char)0x4F, (char)0xff};
-
+/* REMEMBER TO ADD MIME-TYPE TO FUNCTION php_imagetype2mimetype */
/* return info as a struct, to make expansion easier */
@@ -668,6 +668,50 @@
}
/* }}} */
+/* {{{ php_imagetype2mimetype
+ * Convert internal image_type to mime type */
+PHPAPI const char * php_imagetype2mimetype(int image_type)
+{
+ switch( image_type) {
+ case IMAGE_FILETYPE_GIF:
+ return "image/gif";
+ case IMAGE_FILETYPE_JPEG:
+ case IMAGE_FILETYPE_JPC:
+ return "image/jpeg";
+ case IMAGE_FILETYPE_PNG:
+ return "image/png";
+ case IMAGE_FILETYPE_SWF:
+ case IMAGE_FILETYPE_SWC:
+ return "application/x-shockwave-flash";
+ case IMAGE_FILETYPE_PSD:
+ return "image/psd";
+ case IMAGE_FILETYPE_BMP:
+ return "image/bmp";
+ case IMAGE_FILETYPE_TIFF_II:
+ case IMAGE_FILETYPE_TIFF_MM:
+ return "image/tiff";
+ default:
+ case IMAGE_FILETYPE_UNKNOWN:
+ return "application/octet-stream"; /* suppose binary format */
+ }
+}
+/* }}} */
+
+/* {{{ proto array imagetype2mimetype(int imagetype)
+ Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail,
exif_imagetype */
+PHP_FUNCTION(imagetype2mimetype)
+{
+ zval **p_image_type;
+ int arg_c = ZEND_NUM_ARGS();
+
+ if ((arg_c!=1) || zend_get_parameters_ex(arg_c, &p_image_type) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ zval_dtor(*p_image_type);
+ ZVAL_STRING(return_value, (char*)php_imagetype2mimetype(Z_LVAL_PP(p_image_type)), 1);
+}
+/* }}} */
+
/* {{{ php_imagetype
detect filetype from first bytes */
PHPAPI int php_getimagetype(php_stream * stream, char *filetype TSRMLS_DC)
@@ -824,6 +868,7 @@
if (result->channels != 0) {
add_assoc_long(return_value, "channels", result->channels);
}
+ add_assoc_string(return_value, "mime", (char*)php_imagetype2mimetype(itype), 1);
efree(result);
} else {
RETURN_FALSE;
Index: php4/ext/standard/php_image.h
diff -u php4/ext/standard/php_image.h:1.14 php4/ext/standard/php_image.h:1.15
--- php4/ext/standard/php_image.h:1.14 Thu May 23 17:48:27 2002
+++ php4/ext/standard/php_image.h Sat Jun 22 14:14:39 2002
@@ -17,13 +17,15 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_image.h,v 1.14 2002/05/23 21:48:27 derick Exp $ */
+/* $Id: php_image.h,v 1.15 2002/06/22 18:14:39 helly Exp $ */
#ifndef PHP_IMAGE_H
#define PHP_IMAGE_H
PHP_FUNCTION(getimagesize);
+PHP_FUNCTION(imagetype2mimetype);
+
/* {{{ enum image_filetype
This enum is used to have ext/standard/image.c and ext/exif/exif.c use
the same constants for file types.
@@ -47,5 +49,7 @@
/* }}} */
PHPAPI int php_getimagetype(php_stream *stream, char *filetype TSRMLS_DC);
+
+PHPAPI const char * php_imagetype2mimetype(int image_type);
#endif /* PHP_IMAGE_H */