2009-10-17 34 views

Trả lời

13

Sử dụng (một phần) thư viện GD.

PHP: GD - Manual

array getimagesize (string $filename [, array &$imageinfo ]) 

Yếu tố đầu tiên của mảng sẽ là 0 nếu không có hình ảnh. PHP: getimagesize

Nếu bạn chưa cài đặt GD (hầu hết thời gian bạn sẽ làm), bạn có thể đọc tiêu đề tệp là Shane mentioned.

EDIT: Thực ra, như Neal đã chỉ ra trong các ý kiến, thư viện GD thậm chí không bắt buộc phải sử dụng chức năng này. Vì vậy, hãy sử dụng nó.

+2

@Neal - Thật ra, tôi đã không! Tôi không ý kiến. Cảm ơn bạn đã chỉ ra điều đó. Câu trả lời đã được chỉnh sửa. Không phải lần đầu tiên tôi được RTFMn – snicker

+0

Không vấn đề gì^_^Rất vui được trợ giúp! – Neal

+3

Tốt hơn và * nhanh hơn * để sử dụng 'exif_imagetype'. – Brett

4

Cách hiệu quả nhất sẽ là xem xét các byte bắt đầu của tệp và kiểm tra thông số tệp 'số ma thuật'. Here is a list of magic numbers.

+0

Điều đó sẽ hiệu quả hơn là kích hoạt GD, nhưng tôi nghĩ rằng với nhị phân mở, v.v. đầu của hầu hết mọi người. –

+3

Nếu đó là sự thật - nó khá đáng thất vọng. Không phải hầu hết mọi người ở đây đều có bằng cấp CS? –

+3

Tôi không .. nhưng tôi đã viết mã kể từ khi tôi 7. Đáng ngạc nhiên, nhiều người có thể nhận được bằng cấp mà không thực sự biết những gì họ đang phải. Tôi nói từ kinh nghiệm, bởi vì tôi thực sự có bằng cấp về kỹ thuật dân dụng, và tôi biết rất nhiều "thanh trượt" chỉ trượt qua. Một mức độ không có nghĩa là bất cứ điều gì. Bằng chứng rằng bạn có thể làm điều gì đó. – snicker

1

Đối với hồ sơ: Bây giờ trong 2013+ chúng ta có thể:

Đối với tối đa. khả năng tương thích (Nếu bạn không có thư viện GD).
Sử dụng luôn sẵn mime-content-type ((PHP 4> = 4.3.0, PHP 5))

$type = mime_content_type($filename); 
if (strstr($type, 'image/')) 
{ 
    echo 'is image'; 
} 
+2

Bản cập nhật này hiện không được chấp nhận: http://us3.php.net/manual/en/function.mime-content-type.php – bonez

6

Cách tốt nhất để kiểm tra xem tập tin là một hình ảnh

function is_image($path) 
{ 
    $a = getimagesize($path); 
    $image_type = $a[2]; 

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP))) 
    { 
     return true; 
    } 
    return false; 
} 

hơn: http://www.binarytides.com/php-check-if-file-is-an-image/

Các vấn đề liên quan