النتائج 1 إلى 7 من 7

الموضوع: هل يوجد كلاس او دالة تقوم بالتحويل من bmp الى jpg

  1. #1
    عضو فعال
    تاريخ التسجيل
    Sep 2006
    المشاركات
    1,149

    Unhappy هل يوجد كلاس او دالة تقوم بالتحويل من bmp الى jpg



    السلام عليكم ورحمة الله وبركاته

    مرحبا بكم أيها الاساتذه الكرام

    حاليا اُطور سكربت تحميل ملفات وصور متقدم لكن فيه بعض المشاكل

    منها ان الزائر اذا قام برفع صوره bmp (حجمها 2 ميقا وتصل الى 6 ميقا !!:anger1

    مما يسبب ظغط كبير على السيرفر واستهلاك حاد للسيرفر (خصوصا التوقيعات في المنتديات)

    واغلبهم من المبتدئين...الذين لايفقهون شيئا في الاحجام والانساق وهم كثر:anger1:

    علما ان الصوره هذه نفسها لو كانت jpg لما تعدى حجمها 400 كيلو بايت

    الخلاصة

    هل هناك دالة تقوم بتحويل الصورة من bmp الى jpg
    وأؤكد انني اريد ان الزائر اذا اراد ان يحفظ الصوره باسم تكون jpg وليس bmp اطلاقا:anger2:

    انا سأزور الموضوع كل ساعه علي أن أجد فهيما يسعفني ويرد علي :nice:

    ولكم جزيل الشكر أحبتي:shy:





    __________________
    للتواصل
    http://sayat.me/webPro


  2. #2
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    من خلال مكتبة الصور GD لا يوجد دالة تتعامل مع هذا النوع ... لكن هناك برامج يتم التعامل معها من سطر الاوامر لتحويل من bmp الى jpg مثل imagemagic .
    يوجد صنف phpthumb.bmp.php لذلك من هنا phpThumb() - The PHP thumbnail generator

    - ينصح بعدم دعم النسق bmp لانه نسق غير جيد للصور ويستهلك مساحه وموارد في حالة التحويل.





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  3. #3


    وليش تسمح للزوار برفع الصور ذات الامتداد bmp ؟؟





    __________________
    تابعني على Twitter

  4. #4
    عضو فعال
    تاريخ التسجيل
    Sep 2006
    المشاركات
    1,149


    وليش تسمح للزوار برفع الصور ذات الامتداد bmp ؟
    أغلبهم من البنات المبتدئات ماتدري وين ربي حاطها فيه

    ولان فيه عدد لا باس بهم عندهم هذي الصور

    وماودنا نخسر أعضاء فقلنا نبلي احتياجاتهم

    شكرا أستاذ ضيف على افادتك

    لكن يبغالي قعده على البرنامج

    لاني مافهمت شئ صراحه

    هل فيه مثال واقعي عشان اطبقه واعدل عليه.. لي

    لان أغلبها سطور لا احتاجها ولا افقه ماذا تقول!!

    وانا لست مبرمجا انما مطور ومعدل برامج

    واذا فيه زياده او افاده فالشكر لكم مجددا





    __________________
    للتواصل
    http://sayat.me/webPro

  5. #5
    عضو فعال
    تاريخ التسجيل
    Sep 2006
    المشاركات
    1,149


    اممم طيب في سؤال ثاني لو سمحتم


    كود PHP:
    $GD=ImageCreateFrombm("ss.jpg");
    header(' C ontent-type: image/jpeg'); 
    ImagePng($GD);
    ImageDestroy($GD); 
    هذا الكود جميل ومافيه مشكلة

    لكن ماذا لو كان الملف ss.bmp

    واريد ان اعرضه داخل ملف php
    يعني نفس فكرة الكود الي فوق

    هل فيه حل؟

    صيغة bmp جننتني :anger1:

    وانا لست مبرمج بمعنى الكلمة ولكن اطور بعض السكربتات الموجوده عندي والتي فيها بعض الاخطاء

    شكر لكم ومنتظركم على احر من الجمر





    __________________
    للتواصل
    http://sayat.me/webPro

  6. #6
    عضو جديد
    تاريخ التسجيل
    Jan 2008
    المشاركات
    29


    يمكنك تحويل الي GD

    [ دالة ] ConvertBMP2GD

    كود PHP:
    function ConvertBMP2GD($src$dest false) {
    if(!(
    $src_f fopen($src"rb"))) {
    trigger_error("Can't open $src"E_WARNING);
    return 
    false;
    }
    if(!(
    $dest_f fopen($dest"wb"))) {
    trigger_error("Can't open $dest"E_WARNING);
    return 
    false;
    }
    $header unpack("vtype/Vsize/v2reserved/Voffset"fread($src_f14));
    $info =
    unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyr
    es/Vncolor/Vimportant"
    fread($src_f40));
    extract($info);
    extract($header);
    if(
    $type != 0x4D42) { // signature "BM"
    return false;
    }
    $palette_size $offset 54;
    $ncolor $palette_size 4;
    $gd_header "";
    // true-color vs. palette
    $gd_header .= ($palette_size == 0) ? "\xFF\xFE" "\xFF\xFF";
    $gd_header .= pack("n2"$width$height);
    $gd_header .= ($palette_size == 0) ? "\x01" "\x00";
    if(
    $palette_size) {
    $gd_header .= pack("n"$ncolor);
    }
    // no transparency
    $gd_header .= "\xFF\xFF\xFF\xFF";
    fwrite($dest_f$gd_header);
    if(
    $palette_size) {
    $palette fread($src_f$palette_size);
    $gd_palette "";
    $j 0;
    while(
    $j $palette_size) {
    $b $palette{$j++};
    $g $palette{$j++};
    $r $palette{$j++};
    $a $palette{$j++};
    $gd_palette .= "$r$g$b$a";
    }
    $gd_palette .= str_repeat("\x00\x00\x00\x00"256 $ncolor);
    fwrite($dest_f$gd_palette);
    }
    $scan_line_size = (($bits $width) + 7) >> 3;
    $scan_line_align = ($scan_line_size 0x03) ? - ($scan_line_size 0x03)
    0;

    if(
    $bits == 24) {
    $j 0;
    $k 1;
    $m 2;
    $function 'return "';
    while(
    $j $scan_line_size) {
    $function .= "\\0\{\$s\{$m}}\{\$s\{$k}}\{\$s\{$j}}";
    $j += 3;
    $k += 3;
    $m += 3;
    }
    $function .= '";';
    }
    else if(
    $bits == 32) {
    $function 'return "';
    $j 0;
    $k 1;
    $m 2;
    $n 3;
    while(
    $j $scan_line_size) {
    $function .= "\\0\{\$s\{$m}}\{\$s\{$k}}\{\$s\{$j}}";
    $j += 4;
    $k += 4;
    $m += 4;
    $n += 4;
    }
    $function .= '";';
    }
    else if(
    $bits == 8) {
    $function 'return $s;';
    }
    else if(
    $bits == 4) {
    $j 0;
    $function '';
    while(
    $j $scan_line_size) {
    $function .= "\$b=ord(\$s\{$j});";
    $function .= "\$a[]=chr(\$b>>4);";
    $function .= "\$a[]=chr(\$b&0x0F);";
    $j++;
    }
    $function .= "return substr(implode(\$a), 0, \$width);";
    }
    else if(
    $bits == 1) {
    $j 0;
    $function '';
    while(
    $j $scan_line_size) {
    $function .= "\$b=ord(\$s\{$j});";
    $function .= "\$a[]=chr((int)((\$b&0x80)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x40)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x20)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x10)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x08)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x04)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x02)!=0));";
    $function .= "\$a[]=chr((int)((\$b&0x01)!=0));\n";
    $j++;
    }
    $function .= "return substr(implode(\$a), 0, \$width);";
    }
    $f create_function('$s, $width'$function);
    for(
    $i 0$l $height 1$i $height$i++, $l--) {
    // BMP stores scan lines starting from bottom
    fseek($src_f$offset + (($scan_line_size $scan_line_align) * $l));
    $scan_line fread($src_f$scan_line_size);
    $gd_scan_line $f($scan_line$width);
    fwrite($dest_f$gd_scan_line);
    }
    fclose($src_f);
    fclose($dest_f);
    return 
    true;
    }

    class 
    MemoryStream {
    var 
    $position;
    var 
    $varname;
    var 
    $buffer;
    function 
    stream_open($path$mode$options, &$opened_path)
    {
    $url parse_url($path);
    $this->varname $url["host"];
    $this->position 0;
    $this->buffer = @$GLOBALS[$this->varname];
    return 
    true;
    }
    function 
    stream_close()
    {
    $GLOBALS[$this->varname] = $this->buffer;
    }
    function 
    stream_read($count)
    {
    $ret substr($this->buffer$this->position$count);
    $this->position += strlen($ret);
    return 
    $ret;
    }
    function 
    stream_write($data)
    {
    $this->buffer .= $data;
    $this->position += strlen($data);
    return 
    strlen($data);
    }
    function 
    stream_tell()
    {
    return 
    $this->position;
    }
    function 
    stream_eof()
    {
    return 
    $this->position >= strlen($this->buffer);
    }
    function 
    stream_stat() {
    return array( 
    'size' => strlen($this->buffer) );
    }
    }
    function 
    imagecreatefrombmp($filename) {
    // use a memory stream instead of a temp file
    // where possible
    if(function_exists('stream_wrapper_regis
    ter'
    )
    && 
    stream_wrapper_register("mem""MemoryStream")) {
    $tmp_name "mem://GD_TMP_FILE";
    $del_tmp false;
    }
    else {
    $tmp_name tempnam("/tmp""GD");
    $del_tmp true;
    }
    if(
    ConvertBMP2GD($filename$tmp_name)) {
    $img imagecreatefromgd($tmp_name);
    if(
    $del_tmp) {
    unlink($tmp_name);
    }
    return 
    $img;
    } return 
    false;








  7. #7
    عضو جديد
    تاريخ التسجيل
    Jan 2008
    المشاركات
    29


    Sep 2006 :anger1:

    غريبة الموضوع بالصفحة الاولي










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض