سؤال

أنا أستعمل imagecreatefromjpeg, imagecreatefromgif, ، و imagecreatefrompng وظائف لإنشاء صورة مصغرة من image/jpeg, image/gif, ، و image/png MIMES.

أود أيضًا إنشاء صور مصغرة من .BMP الملفات.

راجعت ملفًا واحدًا واكتشفت أن MIME image/x-ms-bmp.

ومع ذلك ، لا يمكنني العثور على مناسبة imagecreatefrom... وظيفة.

الرجاء الاقتراح.

هل كانت مفيدة؟

المحلول

PHP لا يحتوي على وظائف الصورة في BMP.

كانت هناك بعض المحاولات لإنشاء وظائف للقيام بذلك.

يمكنك العثور على نسخة قوية وموثقة جيدًا في هذا التعليق في وثائق PHP: http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214

فيما يلي الوظيفة من هذا التعليق دون الوثائق الممتازة التي تضع وقتًا أطول ولكنها قابلة للقراءة أكثر من ذلك بكثير:

public function imagecreatefrombmp($p_sFile)
{
    $file    =    fopen($p_sFile,"rb");
    $read    =    fread($file,10);
    while(!feof($file)&&($read<>""))
        $read    .=    fread($file,1024);
    $temp    =    unpack("H*",$read);
    $hex    =    $temp[1];
    $header    =    substr($hex,0,108);
    if (substr($header,0,4)=="424d")
    {
        $header_parts    =    str_split($header,2);
        $width            =    hexdec($header_parts[19].$header_parts[18]);
        $height            =    hexdec($header_parts[23].$header_parts[22]);
        unset($header_parts);
    }
    $x                =    0;
    $y                =    1;
    $image            =    imagecreatetruecolor($width,$height);
    $body            =    substr($hex,108);
    $body_size        =    (strlen($body)/2);
    $header_size    =    ($width*$height);
    $usePadding        =    ($body_size>($header_size*3)+4);
    for ($i=0;$i<$body_size;$i+=3)
    {
        if ($x>=$width)
        {
            if ($usePadding)
                $i    +=    $width%4;
            $x    =    0;
            $y++;
            if ($y>$height)
                break;
        }
        $i_pos    =    $i*2;
        $r        =    hexdec($body[$i_pos+4].$body[$i_pos+5]);
        $g        =    hexdec($body[$i_pos+2].$body[$i_pos+3]);
        $b        =    hexdec($body[$i_pos].$body[$i_pos+1]);
        $color    =    imagecolorallocate($image,$r,$g,$b);
        imagesetpixel($image,$x,$height-$y,$color);
        $x++;
    }
    unset($body);
    return $image;
}

نصائح أخرى

ماذا عن شيء مثل هذا الرجل يصف:

http://www.php.net/manual/en/function.imagecreate.php#53879

يوجد مشروع OpenSource ، PHP Image Magician ، يتيح لك قراءة ملفات BMP وكتابةها. انظر هنا: https://stackoverflow.com/a/11531747/577306

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top