2013-10-08 22 views
-1

在本網站(鏈接產品頁面:http://www.boatingsupplynow.com/product_info.php?cPath=979_1044&products_id=29943)圖像顯示拉伸。拉伸的OsCommerce圖像 - 文稿不起作用

我已經應用了2個不同的圖像拉伸貢獻修復程序,似乎都不起作用。我在管理員端附上了我的圖像設置的屏幕截圖。請幫忙!!

enter image description here

<?php 
/* 
    $Id$ 

    osCommerce, Open Source E-Commerce Solutions 
    http://www.oscommerce.com 

    Copyright (c) 2010 osCommerce 

    Released under the GNU General Public License 
*/ 

//// 
// The HTML href link wrapper function 
    function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) { 
    global $request_type, $session_started, $SID; 

    $page = tep_output_string($page); 

    if (!tep_not_null($page)) { 
     die('</td></tr></table></td></tr></table><br /><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine the page link!<br /><br />'); 
    } 

    if ($connection == 'NONSSL') { 
     $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG; 
    } elseif ($connection == 'SSL') { 
     if (ENABLE_SSL == true) { 
     $link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG; 
     } else { 
     $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG; 
     } 
    } else { 
     die('</td></tr></table></td></tr></table><br /><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine connection method on a link!<br /><br />Known methods: NONSSL SSL</strong><br /><br />'); 
    } 

    if (tep_not_null($parameters)) { 
     $link .= $page . '?' . tep_output_string($parameters); 
     $separator = '&'; 
    } else { 
     $link .= $page; 
     $separator = '?'; 
    } 

    while ((substr($link, -1) == '&') || (substr($link, -1) == '?')) $link = substr($link, 0, -1); 

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined 
    if (($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False')) { 
     if (tep_not_null($SID)) { 
     $_sid = $SID; 
     } elseif ((($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true)) || (($request_type == 'SSL') && ($connection == 'NONSSL'))) { 
     if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) { 
      $_sid = tep_session_name() . '=' . tep_session_id(); 
     } 
     } 
    } 

    if (isset($_sid)) { 
     $link .= $separator . tep_output_string($_sid); 
    } 

    while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); 

    if ((SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true)) { 
     $link = str_replace('?', '/', $link); 
     $link = str_replace('&', '/', $link); 
     $link = str_replace('=', '/', $link); 
    } else { 
     $link = str_replace('&', '&amp;', $link); 
    } 

    return $link; 
    } 

//// 

// The HTML image wrapper function 

// Replaces original OScommerce img tag's with call-to image.php(GD-library imagecopyresampled) 

// JPG, BMP images will optimized prior to downloading 

// GIF, PNG will not be optimized 

// Frank Swayze 09/28/2008 

    function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '', $stretch='false') { 

    if ((empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false')) { 

     return false; 

    } 

    $img_type = exif_imagetype($src); 

// alt is added to the img tag even if it is null to prevent browsers from outputting 

// the image filename as default 

// calculate any missing dimensions from function call. Necessary if image is to be resized. 

    if (empty($width) || empty($height)) { 

     if ($image_size = @getimagesize($src)) { 

     if (empty($width) && !empty($height)) { 

      $ratio = $height/$image_size[1]; 

      $width = intval($image_size[0] * $ratio); 

     } elseif (!empty($width) && empty($height)) { 

      $ratio = $width/$image_size[0]; 

      $height = intval($image_size[1] * $ratio); 

     } elseif (empty($width) && empty($height)) { 

      $width = $image_size[0]; 

      $height = $image_size[1]; 

     } 

     } elseif (IMAGE_REQUIRED == 'false') { 

     return false; 

     } 

    } 

    if (($img_type != IMAGETYPE_GIF && $img_type != IMAGETYPE_PNG) && (!(file_exists(DIR_FS_CATALOG . $src)) || filesize(DIR_FS_CATALOG . $src) > 30)) { // if checks for existance of file and skips resizing for files less than 3000bytes(3 Kb) 

     $image = '<img src="image.php?src=' . htmlspecialchars($src) . '&width=' . htmlspecialchars($width) . '&height=' . htmlspecialchars($height) . '"'; 

     } else { 

     $image = '<img src="' . htmlspecialchars($src) . '" width="' . htmlspecialchars($width) . '" height="' . htmlspecialchars($height) . '"'; 

     } 

    $image .= ' border="0" alt="' . htmlspecialchars($alt) . '"'; 

    if (!empty($alt)) { 

     $image .= ' title=" ' . htmlspecialchars($alt) . ' "'; 

    } 

    if (!empty($parameters)) $image .= ' ' . $parameters; 

    $image .= '>'; 

    return $image; 

    } 

//// 
// The HTML form submit button wrapper function 
// Outputs a button in the selected language 
    function tep_image_submit($image, $alt = '', $parameters = '') { 
    global $language; 

    $image_submit = '<input type="image" src="' . tep_output_string(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image) . '" alt="' . tep_output_string($alt) . '"'; 

    if (tep_not_null($alt)) $image_submit .= ' title=" ' . tep_output_string($alt) . ' "'; 

    if ((CONFIG_CALCULATE_IMAGE_SIZE == 'true')) 

     { 

      if ($image_size = @getimagesize($src)) 

      { 

       if (empty($width) && tep_not_null($height)) 

       { 

        if (($image_size[1] < $height) && ($stretch=='false')) 

        { 

         // EC - if width hasn't been passed in, the image height is smaller than the setting, and stretch is false, use original dimensions 

         $width=$image_size[0]; 

         $height=$image_size[1]; 

        } 

        else 

        { 

         // EC - if width hasn't been passed, and the image height is larger than the setting, height ends up as the setting and width is modified to suit 

        $ratio = $height/$image_size[1]; 

        $width = $image_size[0] * $ratio; 

        } 

       } 

       elseif (tep_not_null($width) && empty($height)) 

       { 

         // EC - if height hasn't been passed in, the image width is smaller than the setting, and stretch is false, use original dimensions 

        if (($image_size[0] < $width) && ($stretch=='false')) 

        { 

         $width=$image_size[0]; 

         $height=$image_size[1]; 

        } 

        else 

        { 

         // EC - if height hasn't been passed, and the image width is larger than the setting, width ends up as the setting and height is modified to suit 

         $ratio = $width/$image_size[0]; 

         $height = $image_size[1] * $ratio; 

        } 

       } 

       elseif (empty($width) && empty($height)) 

       { 

        // EC - if neither height nor width are passed in, just use the original dimensions 

        $width = $image_size[0]; 

        $height = $image_size[1]; 

       } 

       //EC - added the following elseif for calculating based on stretch/no-stretch 

       elseif (tep_not_null($width) && tep_not_null($height)) 

       { 

        if ((($image_size[0] > $width) || ($image_size[1] > $height)) && ($stretch=='false')) 

        { 

         // EC - if width and height are both passed in, either original height or width are larger than the setting, and stretch is false, resize both dimensions to suit 

         $new_ratio=$height/$width; 

         $image_ratio=$image_size[1]/$image_size[0]; 

         if ($new_ratio >= $image_ratio) 

         { 

          $height=$image_size[1]*($width/$image_size[0]); 

         } 

         else 

         { 

          $width=$image_size[0]*($height/$image_size[1]); 

         } 

        } 

        elseif ($stretch=='false') 

        { 

         // EC - if we got here, both width and height have been passed in, both original height and width are smaller than setting, and stretch is set to false. So just use original dimensions. 

         $width=$image_size[0]; 

         $height=$image_size[1]; 

        } 

       } 

      } 

      elseif (IMAGE_REQUIRED == 'false') 

      { 

       return false; 

      } 

     } 



    if (tep_not_null($width) && tep_not_null($height)) { 

     $image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"'; 

    } 

    if (tep_not_null($parameters)) $image_submit .= ' ' . $parameters; 

    $image_submit .= ' />'; 

    return $image_submit; 
    } 

//// 
// Output a function button in the selected language 
    function tep_image_button($image, $alt = '', $parameters = '') { 
    global $language; 

    return tep_image(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image, $alt, '', '', $parameters); 
    } 

//// 
// Output a separator either through whitespace, or with an image 
    function tep_draw_separator($image = 'pixel_black.gif', $width = '100%', $height = '1') { 
    return tep_image(DIR_WS_IMAGES . $image, '', $width, $height); 
    } 

//// 
// Output a form 
    function tep_draw_form($name, $action, $method = 'post', $parameters = '', $tokenize = false) { 
    global $sessiontoken; 

    $form = '<form name="' . tep_output_string($name) . '" action="' . tep_output_string($action) . '" method="' . tep_output_string($method) . '"'; 

    if (tep_not_null($parameters)) $form .= ' ' . $parameters; 

    $form .= '>'; 

    if (($tokenize == true) && isset($sessiontoken)) { 
     $form .= '<input type="hidden" name="formid" value="' . tep_output_string($sessiontoken) . '" />'; 
    } 

    return $form; 
    } 

//// 
// Output a form input field 
    function tep_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true) { 
    global $HTTP_GET_VARS, $HTTP_POST_VARS; 

    $field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"'; 

    if (($reinsert_value == true) && ((isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])))) { 
     if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) { 
     $value = stripslashes($HTTP_GET_VARS[$name]); 
     } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) { 
     $value = stripslashes($HTTP_POST_VARS[$name]); 
     } 
    } 

    if (tep_not_null($value)) { 
     $field .= ' value="' . tep_output_string($value) . '"'; 
    } 

    if (tep_not_null($parameters)) $field .= ' ' . $parameters; 

    $field .= ' />'; 

    return $field; 
    } 

//// 
// Output a form password field 
    function tep_draw_password_field($name, $value = '', $parameters = 'maxlength="40"') { 
    return tep_draw_input_field($name, $value, $parameters, 'password', false); 
    } 

//// 
// Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field() 
    function tep_draw_selection_field($name, $type, $value = '', $checked = false, $parameters = '') { 
    global $HTTP_GET_VARS, $HTTP_POST_VARS; 

    $selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"'; 

    if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"'; 

    if (($checked == true) || (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name]) && (($HTTP_GET_VARS[$name] == 'on') || (stripslashes($HTTP_GET_VARS[$name]) == $value))) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]) && (($HTTP_POST_VARS[$name] == 'on') || (stripslashes($HTTP_POST_VARS[$name]) == $value)))) { 
     $selection .= ' checked="checked"'; 
    } 

    if (tep_not_null($parameters)) $selection .= ' ' . $parameters; 
    $selection .= ' />'; 

    return $selection; 
    } 

//// 
// Output a form checkbox field 
    function tep_draw_checkbox_field($name, $value = '', $checked = false, $parameters = ' style="background:none;border:0px;"') { 
    return tep_draw_selection_field($name, 'checkbox', $value, $checked, $parameters); 
    } 

//// 
// Output a form radio field 
    function tep_draw_radio_field($name, $value = '', $checked = false, $parameters = ' style="background:none;border:0px;"') { 
    return tep_draw_selection_field($name, 'radio', $value, $checked, $parameters); 
    } 

//// 
// Output a form textarea field 
// The $wrap parameter is no longer used in the core xhtml template 
    function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) { 
    global $HTTP_GET_VARS, $HTTP_POST_VARS; 

    $field = '<textarea name="' . tep_output_string($name) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"'; 

    if (tep_not_null($parameters)) $field .= ' ' . $parameters; 

    $field .= '>'; 

    if (($reinsert_value == true) && ((isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])))) { 
     if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) { 
     $field .= tep_output_string_protected(stripslashes($HTTP_GET_VARS[$name])); 
     } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) { 
     $field .= tep_output_string_protected(stripslashes($HTTP_POST_VARS[$name])); 
     } 
    } elseif (tep_not_null($text)) { 
     $field .= tep_output_string_protected($text); 
    } 

    $field .= '</textarea>'; 

    return $field; 
    } 

//// 
// Output a form hidden field 
    function tep_draw_hidden_field($name, $value = '', $parameters = '') { 
    global $HTTP_GET_VARS, $HTTP_POST_VARS; 

    $field = '<input type="hidden" name="' . tep_output_string($name) . '"'; 

    if (tep_not_null($value)) { 
     $field .= ' value="' . tep_output_string($value) . '"'; 
    } elseif ((isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]))) { 
     if ((isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name]))) { 
     $field .= ' value="' . tep_output_string(stripslashes($HTTP_GET_VARS[$name])) . '"'; 
     } elseif ((isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]))) { 
     $field .= ' value="' . tep_output_string(stripslashes($HTTP_POST_VARS[$name])) . '"'; 
     } 
    } 

    if (tep_not_null($parameters)) $field .= ' ' . $parameters; 

    $field .= ' />'; 

    return $field; 
    } 

//// 
// Hide form elements 
    function tep_hide_session_id() { 
    global $session_started, $SID; 

    if (($session_started == true) && tep_not_null($SID)) { 
     return tep_draw_hidden_field(tep_session_name(), tep_session_id()); 
    } 
    } 

//// 
// Output a form pull down menu 
    function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) { 
    global $HTTP_GET_VARS, $HTTP_POST_VARS; 

    $field = '<select name="' . tep_output_string($name) . '"'; 

    if (tep_not_null($parameters)) $field .= ' ' . $parameters; 

    $field .= '>'; 

    if (empty($default) && ((isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])))) { 
     if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) { 
     $default = stripslashes($HTTP_GET_VARS[$name]); 
     } elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) { 
     $default = stripslashes($HTTP_POST_VARS[$name]); 
     } 
    } 

    for ($i=0, $n=sizeof($values); $i<$n; $i++) { 
     $field .= '<option value="' . tep_output_string($values[$i]['id']) . '"'; 
     if ($default == $values[$i]['id']) { 
     $field .= ' selected="selected"'; 
     } 

     $field .= '>' . tep_output_string($values[$i]['text'], array('"' => '&quot;', '\'' => '&#039;', '<' => '&lt;', '>' => '&gt;')) . '</option>'; 
    } 
    $field .= '</select>'; 

    if ($required == true) $field .= TEXT_FIELD_REQUIRED; 

    return $field; 
    } 

//// 
// Creates a pull-down list of countries 
    function tep_get_country_list($name, $selected = '', $parameters = '') { 
    $countries_array = array(array('id' => '', 'text' => PULL_DOWN_DEFAULT)); 
    $countries = tep_get_countries(); 

    for ($i=0, $n=sizeof($countries); $i<$n; $i++) { 
     $countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']); 
    } 

    return tep_draw_pull_down_menu($name, $countries_array, $selected, $parameters); 
    } 

//// 
// Output a jQuery UI Button 
    function tep_draw_button($title = null, $icon = null, $link = null, $priority = null, $params = null) { 
    static $button_counter = 1; 

    $types = array('submit', 'button', 'reset'); 

    if (!isset($params['type'])) { 
     $params['type'] = 'submit'; 
    } 

    if (!in_array($params['type'], $types)) { 
     $params['type'] = 'submit'; 
    } 

    if (($params['type'] == 'submit') && isset($link)) { 
     $params['type'] = 'button'; 
    } 

    if (!isset($priority)) { 
     $priority = 'secondary'; 
    } 
    $button =''; 
    $button .= '<span class="tdbLink">'; 

    if (($params['type'] == 'button') && isset($link)) { 
     $button .= '<a id="tdb' . $button_counter . '" href="' . $link . '"'; 

     if (isset($params['newwindow'])) { 
     $button .= ' target="_blank"'; 
     } 
    } else { 
     $button .= '<button id="tdb' . $button_counter . '" type="' . tep_output_string($params['type']) . '"'; 
    } 

    if (isset($params['params'])) { 
     $button .= ' ' . $params['params']; 
    } 

    $button .= '>'. $title; 

    if (($params['type'] == 'button') && isset($link)) { 
     $button .= '</a>'; 
    } else { 
     $button .= '</button>'; 
    } 

    $button .= '</span><script type="text/javascript">$("#tdb' . $button_counter . '").button('; 

    $args = array(); 

    if (isset($icon)) { 
     if (!isset($params['iconpos'])) { 
     $params['iconpos'] = 'left'; 
     } 

     if ($params['iconpos'] == 'left') { 
     $args[] = 'icons:{primary:"ui-icon-' . $icon . '"}'; 
     } else { 
     $args[] = 'icons:{secondary:"ui-icon-' . $icon . '"}'; 
     } 
    } 

    if (empty($title)) { 
     $args[] = 'text:false'; 
    } 

    if (!empty($args)) { 
     $button .= '{' . implode(',', $args) . '}'; 
    } 

    $button .= ').addClass("ui-priority-' . $priority . '").parent().removeClass("tdbLink");</script>'; 
    $button_counter++; 

    return $button; 
    } 
?> 
+0

看看你的頁面源碼:'/image.php?src = images/47-95001_2.jpg&width = 80&height = 235'。你通過硬化大小而不是圖像原來的東西來強制圖像被拉伸。 –

回答

0

我從來不喜歡的圖像拉伸 「修復」 的貢獻。由於目錄端不同頁面內的圖像尺寸不同,我一直傾向於使用縮略圖生成器。

嘗試this contribution,將文件恢復到您安裝的兩個加載項之前的版本。根據tep_image參數所要求的尺寸,像這樣的包可以創建原始圖像的重新採樣和適當大小的副本,而不是將圖像調整爲特定大小。

像這樣常常被忽視的方法的另一個好處是,也有助於節省帶寬和減少頁面加載時間。如果您爲產品上傳2800px X 1400px圖像,該文件很可能是多MB圖像。每次在目錄端請求該圖像時,必須根據IMG標籤的寬度和高度屬性,在完成任何大小調整之前將完整文件下載到瀏覽器。使用縮略圖的優勢在於每個縮略圖都會根據其大小進行重新採樣。因此,如果您的產品列表只需要200px X 100px圖片,則200px X 100px圖片是從您上傳的2800px X 1400px圖片製作的。根據您的設置,您的圖像可能處於低KB範圍。