Обрезание картинок

Тема в разделе "PHP", создана пользователем vave, 20 ноя 2011.

Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Как сделать что бы картинки (превьюшки) обрезались по центру?

    вот код

    PHP:
    <?

      function 
    safe_data ($firste$second)
      {
        if (
    $second == 'query')
        {
          if (
    is_array ($firste))
          {
            foreach (
    $firste as $safedatafor => $safedatasry)
            {
              if (
    get_magic_quotes_gpc ())
              {
                
    $safedatasry stripslashes ($safedatasry);
              }

              
    $firste[$safedatafor] = addslashes ($safedatasry);
            }

            return 
    $firste;
          }

          if (
    get_magic_quotes_gpc ())
          {
            
    $safedatasry stripslashes ($safedatasry);
          }

          
    $firste addslashes (stripslashes ($firste));
          return 
    $firste;
        }

        if (
    $second == 'display')
        {
          if (
    is_array ($firste))
          {
            foreach (
    $firste as $safedatafor => $safedatasry)
            {
              
    $firste[$safedatafor] = htmlspecialchars (stripslashes ($safedatasry), ENT_QUOTES);
            }

            return 
    $firste;
          }

          
    $firste htmlspecialchars (stripslashes ($firste), ENT_QUOTES);
        }

        return 
    $firste;
      }

      function 
    price ($price)
      {
        
    $price ereg_replace ('[^0-9.]'''$price);
        
    $price explode ('.'$price);
        return 
    $price[0];
      }

      function 
    check_pass ($checkpassfirste$checkpasssecond)
      {
        
    $checkpassry true;
        if (
    $checkpassfirste !== $checkpasssecond)
        {
          
    $checkpassry false;
        }

        if (!((!(
    strlen ($checkpassfirste) < 6) AND !(20 strlen ($checkpassfirste)))))
        {
          
    $checkpassry false;
        }

        if (!((!
    ereg ('[[:punct:]]'$checkpassfirste) AND !ereg ('[[:space:]]'$checkpassfirste))))
        {
          
    $checkpassry false;
        }

        return 
    $checkpassry;
      }

      function 
    check_user ($checkuserone)
      {
        
    $checkpassry true;
        if (!((!(
    strlen ($checkuserone) < 6) AND !(20 strlen ($checkuserone)))))
        {
          
    $checkpassry false;
        }

        if (!((!
    ereg ('[[:punct:]]'$checkuserone) AND !ereg ('[[:space:]]'$checkuserone))))
        {
          
    $checkpassry false;
        }

        return 
    $checkpassry;
      }

      function 
    check_email ($checkemailone)
      {
        
    $checkemailtou '^([_a-z0-9-]+)(\\.[_a-z0-9-]+)*@([a-z0-9-]+)(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$';
        
    $checkpassry false;
        if (
    eregi ($checkemailtou$checkemailone))
        {
          
    $checkpassry true;
        }

        return 
    $checkpassry;
      }

      function 
    summary ($summaryone$summarytou)
      {
        if (
    $summarytou substr_count ($summaryone' '))
        {
          
    $summaryone explode (' '$summaryone);
          
    $summaryone array_slice ($summaryone0$summarytou);
          
    $summaryone implode (' '$summaryone) . ' ...';
        }

        return 
    $summaryone;
      }

      function 
    new_dim ($newdimone$newdimtou$newdimsry$newdimfor)
      {
        if (
    $newdimsry $newdimone)
        {
          
    $newdimfive $newdimsry $newdimone;
          
    $newdimone $newdimsry;
          
    $newdimtou round ($newdimtou $newdimfive);
        }

        if (
    $newdimfor $newdimtou)
        {
          
    $newdimfive $newdimfor $newdimtou;
          
    $newdimtou $newdimfor;
          
    $newdimone round ($newdimone $newdimfive);
        }

        return array (
    'x' => $newdimone'y' => $newdimtou);
      }

      function 
    resize ($resizeone$resizetou$newdimone$newdimtou$resizestry$resizefor$resizefive)
      {
        if (
    $resizefive == 2)
        {
          
    $resizeone imagecreatefromjpeg ($resizeone);
          
    $resizesex imagecreatetruecolor ($resizestry$resizefor);
          
    imagecopyresampled ($resizesex$resizeone0000$resizestry$resizefor$newdimone$newdimtou);
          
    touch ($resizetou);
          
    imagejpeg ($resizesex$resizetou100);
          
    imagedestroy ($resizesex);
          return 
    null;
        }

        if (
    $resizefive == 3)
        {
          
    $resizeone imagecreatefrompng ($resizeone);
          
    $resizesex imagecreatetruecolor ($resizestry$resizefor);
          
    imagecopyresampled ($resizesex$resizeone0000$resizestry$resizefor$newdimone$newdimtou);
          
    touch ($resizetou);
          
    imagepng ($resizesex$resizetou100);
          
    imagedestroy ($resizesex);
        }

      }

      function 
    dropdown ($dropdownone$dropdowntou)
      {
        foreach (
    $dropdownone as $safedatasry)
        {
          
    $safedatasry str_replace (''''$safedatasry);
          echo 
    '<option value=\'' $safedatasry '\'';
          if (
    trim ($safedatasry) == $dropdowntou)
          {
            echo 
    ' selected=\'selected\'';
          }

          echo 
    '>' trim ($safedatasry) . '</option>';
        }

      }

      function 
    page_links ($firste$pagelinksone$pagelinkstou)
      {
        foreach (
    $firste as $safedatafor => $safedatasry)
        {
          if (
    $safedatafor != 'page')
          {
            
    $checkpassfirste .= '&amp;' $safedatafor '=' $safedatasry;
            continue;
          }
        }

        if (
    $firste[page])
        {
          echo 
    '<a href=\'' $pagelinkstou '?page=' . ($firste[page] - 1) . $checkpassfirste '\'>Prev</a>&nbsp;&nbsp;';
        }

        if (
    $pagelinksone)
        {
          if (
    <= $firste[page] - 5)
          {
            
    $pagelinkssri $firste[page] - 5;
          }
          else
          {
            
    $pagelinkssri 1;
          }

          if (
    $pagelinkssri <= $pagelinksone)
          {
            
    $pagelinksfor $pagelinkssri 9;
          }
          else
          {
            
    $pagelinksfor $pagelinksone;
            if (
    <= $pagelinksfor 9)
            {
              
    $pagelinkssri $pagelinksfor 9;
            }
            else
            {
              
    $pagelinkssri 1;
            }
          }

          for (
    $pagelinksfive $pagelinkssri$pagelinksfive <= $pagelinksfor; ++$pagelinksfive)
          {
            echo 
    '<a ';
            if (
    $pagelinksfive == $firste[page])
            {
              echo 
    'class=\'current\'';
            }

            echo 
    ' href=\'' $pagelinkstou '?page=' $pagelinksfive $checkpassfirste . ('\'>' $pagelinksfive '</a> ');
          }
        }

        if (
    $firste[page] < $pagelinksone)
        {
          echo 
    '&nbsp;<a href=\'' $pagelinkstou '?page=' . ($firste[page] + 1) . $checkpassfirste '\'>Next</a>';
        }

      }

      function 
    filter_string ($summaryone)
      {
        
    $filterstringone = array ('content-type''mime-version''multipart/mixed''content-transfer-encoding''bcc:''cc:''to:');
        foreach (
    $filterstringone as $filterstringtou)
        {
          if (
    substr_count (strtolower ($summaryone), $filterstringtou))
          {
            exit (
    'Suspected email injection attempt from ' $_SERVER[REMOTE_ADDR] . ' - mail not being sent.');
          }
        }

      }

      function 
    filter_newline ($summaryone)
      {
        if (
    preg_match ('/(%0a|%0d|\\n+|\\r+)/i'strtolower ($summaryone)) != 0)
        {
          exit (
    'Suspected email injection attempt from ' $_SERVER[REMOTE_ADDR] . ' - mail not being sent.');
        }

      }

    ?>
    и вот

    PHP:
    <?

      
    $lgen '7jse87w34f';
      
    $user_types = array (=> 'User''Administrator''Superuser');
      
    $status = array (=> 'Available''Sale Pending''Sold');
      
    $sizes = array ('enlarge' => array (600500), 'large' => array (390293), 'thumb' => array (150250), 'small' => array (6750));
    ?>
     
  2. dr.5y51em

    dr.5y51em Писатель

    Регистр.:
    24 июн 2011
    Сообщения:
    7
    Симпатии:
    1
    Используйте библиотеку Перейти по ссылке, там примеры, удобная документация. Из приятных мелочей, есть "умная" ширина, высота и позиционирование (как в px так и в %)
     
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Я режу так? и все отлично работает

    PHP:
     $w=80;    //Высота  картинки превью
        
    $h=80;     //Ширина  картинки превью
    preg_match"/<img id=\"img\"  src=\"(.*?)\"/is"$cur_contents$preg_images3);
     
    $preg_images3='http://dagbarter.ru'.$preg_images3[1];
     if (!
    $preg_images[1]){$image_title="no.png";} else{
    $im=@imagecreatefromjpeg($preg_images3);
    $im1=@imagecreatetruecolor($w,$h);
        @
    imagecopyresampled($im1,$im,0,0,0,0,$w,$h,@imagesx($im),@imagesy($im));
        @
    imagejpeg($im1,'imagespapka/'.$image_title3,100);
        @
    imagedestroy($im);
        @
    imagedestroy($im1);

     }