webForumDet fria alternativet

Ange bredd till $text

9 svar · 1 166 visningar · startad av jlee

jleeMedlem sedan dec. 2002378 inlägg
#1

Denna länken skapar automatiskt en thumbail bild från en mapp. $text hämtas från ett annat ställe där <img osv. läggs till med den omfattande kod som jag inte kan ändra. Nu vill jag komma runt detta och bestämma width själv på bilden så jag undrar om jag på något sätt kan ange bredd till $text på något sätt? Finns det något php kommando som jag kan använda för att komma runt...

Länken:

$jslink = "<a href=\"$link\" title=\"$title\" rel=\"lightbox\">[red]$text[/red]</a>";
Danne VMedlem sedan aug. 20068 090 inlägg
#2

Om tumnageln genereras dynamiskt, dvs att den inte existerar innan länken klickas, så finns det en kod nånstans som ger den de mått som den slutligen får. "Server-side" alltså. Det är väl i nån instruktion till serverns GD-library eller nåt kan jag tro. Problemet är att du troligen inte kan lägga in mått i själva länken som "overrides" (vad det nu kallas på svenska?) de måtten som tumnageln får i den instruktionen. Jag tror inte det i alla fall.

Jag skulle nog faktiskt försöka hitta den där instruktionen i alla fall. Sök i dokumenten efter "GD" och se om du kan hitta var storleken sätts.

Ett annat sätt skulle kunna vara att du kollar i koden från en färdiggenererad sida om tumnaglarna omsluts av en speciell div, eller om dom har en speciell CSS-class eller liknande. För i så fall kan du formatera dom med CSS väldigt lätt.

Har deras img-taggar t.ex. en class som heter typ ".thumbs" så skapar du en stil i din stilmall:

.thumbs {
width:80px;
}

eller vad du nu vill ha.

Ligger allesammans i en div som heter #thumbs, så kan stilen se ut så här:

#thumbs img {
width:80px
}

Kan du kopiera koden i en färdig sida med tumnaglarna så får vi se?

jleeMedlem sedan dec. 2002378 inlägg
#3

Inte så enkelt tror jag, bifogar kod för jag har fastnat(nerkortad=annars för lång):

<?php

* $columns = Array(  "#" => "width=\"20\"", 
* 					"<input type=\"checkbox\" name=\"toggle\" value=\"\" onclick=\"checkAll(".$num_rows.")\" />" => "width=\"20\"",* 
* 					$VM_LANG->_PHPSHOP_PRODUCT_LIST_NAME => '',
* 					$VM_LANG->_PHPSHOP_PRODUCT_LIST_SKU => '',
* 					_E_REMOVE => "width=\"5%\""

class vmCommonHTML {

	/**
	* Writes a "Save Ordering" Button
	* @param int the number of rows
	*/
	function getSaveOrderButton( $num_rows, $funcname='reorder') {
		global $mosConfig_live_site;
		$n = $num_rows-1;
		return '<a href="javascript: document.adminForm.func.value = \''.$funcname.'\'; saveorder( '.$n.' );">
				<img src="'.$mosConfig_live_site.'/administrator/images/filesave.png" border="0" width="16" height="16" alt="Save Order" /></a>';
	}
	function getOrderingField( $ordering ) {

		return '<input type="text" name="order[]" size="5" value="'. $ordering .'" class="text_area" style="text-align: center" />';

	}
	
	function getYesNoIcon( $condition, $pos_alt = "Published", $neg_alt = "Unpublished" ) {
		global $mosConfig_live_site;
		if( $condition===true || strtoupper( $condition ) == "Y" )
			return '<img src="'.$mosConfig_live_site.'/administrator/images/tick.png" border="0" alt="'.$pos_alt.'" />';
		else
			return '<img src="'.$mosConfig_live_site.'/administrator/images/publish_x.png" border="0" alt="'.$neg_alt.'" />';
	}
	/*
	* Loads all necessary files for JS Overlib tooltips
	*/
	function loadOverlib() {
		global  $mosConfig_live_site;
		if( !defined( "_OVERLIB_LOADED" )) {
			?>
			<script language="Javascript" type="text/javascript" src="<?php echo $mosConfig_live_site;?>/includes/js/overlib_mini.js"></script>
			<div id="overDiv" style="position:absolute; visibility:hidden; z-index:10000;"></div>
			<?php
			define ( "_OVERLIB_LOADED", "1" );
		}
	}
	/**
	 * Returns a div element of the class "shop_error" 
	 * containing $msg to print out an error
	 *
	 * @param string $msg
	 * @return string HTML code
	 */
	function getErrorField( $msg ) {
		
		$html = '<div class="shop_error">'.$msg.'</div>';
		return $html;
	}

	/**
	 * Returns a div element of the class "shop_error" 
	 * containing $msg to print out an error
	 *
	 * @param string $msg
	 * @return string HTML code
	 */
	function getInfoField( $msg ) {
		
		$html = '<div class="shop_info">'.$msg.'</div>';
		return $html;
	}
	/**
	 * Prints a JS function to validate all fields
	 * given in the array $required_fields
	 * Does only test if non-empty (or if no options are selected)
	 * Includes a check for a valid email-address
	 *
	 * @param array $required_fields The list of form elements that are to be validated
	 * @param string $formname The name for the form element
	 * @param string $div_id_postfix The ID postfix to identify the label for the field
	 */
	function printJS_formvalidation( $required_fields, $formname = 'adminForm', $functioname='submitregistration', $div_id_postfix = '_div' ) {
		global $VM_LANG;
		echo '
		<script language="javascript" type="text/javascript">//<![CDATA[
		function '.$functioname.'() {
			var form = document.'.$formname.';
			var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i");
			var isvalid = true';
		
		foreach ( $required_fields as $fieldname ) {
			echo '
			if( form.'.$fieldname.'.value == "" ) {
				document.getElementById(\''.$fieldname.$div_id_postfix.'\').style.color = "red";
				isvalid = false;
			}
			else {
				document.getElementById(\''.$fieldname.$div_id_postfix.'\').style.color = "";
			}
			
			';
		}
		if( in_array( 'email', $required_fields)) {
		
			echo '
			if( !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(form.email.value))) {
				alert( \''. html_entity_decode( $VM_LANG->_REGWARN_MAIL ).'\');
				return false;
			}';

		}
		if( in_array( 'username', $required_fields )) {
			
			echo '
			if (r.exec(form.username.value) || form.username.value.length < 3) {
				alert( "'. html_entity_decode( sprintf($VM_LANG->_VALID_AZ09, $VM_LANG->_USERNAME, 2)) .'" );
				return false;
			}';
		}
		if( in_array( 'password', $required_fields )) {
			
			echo '
			if (form.password.value.length < 6) {
				alert( "'. html_entity_decode( $VM_LANG->_REGWARN_PASS ).'" );
				return false;
			} else if (form.password2.value == "") {
				alert( "'.html_entity_decode( $VM_LANG->_REGWARN_VPASS1).'" );
				return false;
			} else if ((form.password.value != "") && (form.password.value != form.password2.value)){
				alert( "'. html_entity_decode( $VM_LANG->_REGWARN_VPASS2).'" );
				return false;
			} else if (r.exec(form.password.value)) {
				alert( "'. html_entity_decode(sprintf( $VM_LANG->_VALID_AZ09, $VM_LANG->_PASSWORD, 6 )) .'" );
				return false;
			}';
		}
		if( in_array( 'agreed', $required_fields )) {
			echo '
			if (!form.agreed.checked) {
				alert( "'. $VM_LANG->_PHPSHOP_AGREE_TO_TOS .'" );
				return false;
			}';
		}
		// Finish the validation function
		echo '
			if( !isvalid) {
				alert("'.addslashes( html_entity_decode($VM_LANG->_CONTACT_FORM_NC) ).'" );
			}
			return isvalid;
		}
		//]]>
		</script>';
	}
}

/**
* Utility function to provide ToolTips
* @param string ToolTip text
* @param string Box title
* @returns HTML code for ToolTip
*/
function mm_ToolTip( $tooltip, $title='Tip!', $image = "{mosConfig_live_site}/images/M_images/con_info.png", $width='', $text='', $href='#', $link=false ) {
	global $mosConfig_live_site, $database;
	
	defined( 'vmToolTipCalled') or define('vmToolTipCalled', 1);
	
	$tooltip = @htmlentities( $database->getEscaped($tooltip), ENT_QUOTES, vmGetCharset() );
	
	if ( !empty($width) ) {
		$width = 'this.T_WIDTH=\''.$width .'\';';
	}
	if ( $title ) {
		$title = 'this.T_TITLE=\''.$title .'\';';
	}
	$image = str_replace( "{mosConfig_live_site}", $mosConfig_live_site, $image);
	$text 	= '<img src="'. $image .'" align="middle" border="10" />&nbsp;'.$text;
	
	$style = 'style="text-decoration: none; color: #333;"';
	if ( $href ) {
		$style = '';
	}
	if ( $link ) {
		$tip = "<a href=\"". $href ."\" onmouseover=\"return escape( '$tooltip' );\" ". $style .">". $text ."</a>";
	} else {
		$tip = "<span onmouseover=\"$width $title return escape( '$tooltip' );\" ". $style .">". $text ."</span>";
	}

	return $tip;
}
// borrowed from mambo.php
function shopMakeHtmlSafe( $string, $quote_style=ENT_QUOTES, $exclude_keys='' ) {
	
	$string = htmlspecialchars( $string, $quote_style );
	return $string;
}

function mm_showMyFileName( $filename ) {
    
    if (DEBUG == '1' ) {
        echo mm_ToolTip( '<div class=\'inputbox\'>Begin of File: '. $filename.'</div>');
    }
}
/**
* Wraps HTML Code or simple Text into Javascript
* and uses the noscript Tag to support browsers with JavaScript disabled
**/
function mm_writeWithJS( $textToWrap, $noscriptText ) {
    $text = "";
    if( !empty( $textToWrap )) {
        $text = "<script type=\"text/javascript\">//<![CDATA[
            document.write('".str_replace("\\\"", "\"", addslashes( $textToWrap ))."');
            //]]></script>\n";
    }
    if( !empty( $noscriptText )) {
        $text .= "<noscript>
            $noscriptText
            </noscript>\n";
    }
    return $text;
}
/**
* A function to create a XHTML compliant and JS-disabled-safe pop-up link
*/
function vmPopupLink( $link, $text, $popupWidth=640, $popupHeight=480, $target='_blank', $title='' ) {
	
	[red]$jslink = "<a href=\"$link\" title=\"$title\" rel=\"lightbox\">$text</a>";[/red]
	
	
	return mm_writeWithJS( $jslink, $noscriptlink );
}

?>
jleeMedlem sedan dec. 2002378 inlägg
#4

Bifogar lite kod från en annan fil också som kanske har betydelse:

*	@param int $newxsize			new maximum image width
*	@param int $newysize			new maximum image height
*	@param string $fileout			output image path
*	@param int $thumbMaxSize		whether thumbnail should have background fill to make it exactly $newxsize x $newysize
*	@param int $bgred				0-255 - red color variable for background filler
*	@param int $bggreen				0-255 - green color variable for background filler
*	@param int $bgblue				0-255 - blue color variable for background filler
*	
*/
	function Img2Thumb($filename, $newxsize=60, $newysize=60, $fileout='',
		$thumbMaxSize=0, $bgred=0, $bggreen=0, $bgblue=0)
	{		
		
		//	New modification - checks color int to be sure within range
		if($thumbMaxSize)
		{
			$this->maxSize = true;
		}
		else
		{
			$this->maxSize = false;
		}
		if($bgred>=0 || $bgred<=255)
		{
			$this->bg_red = $bgred;
		}
		else
		{
			$this->bg_red = 0;
		}
		if($bggreen>=0 || $bggreen<=255)
		{
			$this->bg_green = $bggreen;
		}
		else
		{
			$this->bg_green = 0;
		}
		if($bgblue>=0 || $bgblue<=255)
		{
			$this->bg_blue = $bgblue;
		}
		else
		{
			$this->bg_blue = 0;
		}
		
		$this->NewImgCreate($filename,$newxsize,$newysize,$fileout);
	}
	
/**
*  
*	private function - do not call
*
*/
	function NewImgCreate($filename,$newxsize,$newysize,$fileout)
	{

		$type = $this->GetImgType($filename);
		
		$pathinfo = pathinfo( $fileout );
		if( empty( $pathinfo['extension'])) {
			$fileout .= '.'.$type;
		}
		$this->fileout = $fileout;
		
		// free some memory
		clearstatcache();
		
		switch($type)
		{
			case "gif":
				// unfortunately this function does not work on windows
				// via the precompiled php installation :(
				// it should work on all other systems however.
				if( function_exists("imagecreatefromgif") )
				{
					$orig_img = imagecreatefromgif($filename);
					break;
				}
				else
				{
					echo 'Sorry, this server doesn\'t support <b>imagecreatefromgif()</b>';
					exit;
					break;
				}
			case "jpg":
				$orig_img = imagecreatefromjpeg($filename);
				break;
			case "png":
				$orig_img = imagecreatefrompng($filename);
				break;
		}
		
		$new_img =$this->NewImgResize($orig_img,$newxsize,$newysize,$filename);

		if (!empty($fileout))
		{
			 $this-> NewImgSave($new_img,$fileout,$type);
		}
		else
		{
			 $this->NewImgShow($new_img,$type);
		}
		
		ImageDestroy($new_img);
		ImageDestroy($orig_img);
	}
	
	/**
*  
*	private function - do not call
*	includes function ImageCreateTrueColor and ImageCopyResampled which are available only under GD 2.0.1 or higher !
*/
	function NewImgResize($orig_img,$newxsize,$newysize,$filename)
	{
		//getimagesize returns array
		// [0] = width in pixels
		// [1] = height in pixels
		// [2] = type
		// [3] = img tag "width=xx height=xx" values
		
        $orig_size = getimagesize($filename);

        $maxX = $newxsize;
        $maxY = $newysize;

        if (($orig_size[0]/$orig_size[1])<($maxX/$maxY))
        {
                $newxsize = $newysize * ($orig_size[0]/$orig_size[1]);
                $adjustX = ($maxX - $newxsize)/2;
                $adjustY = 0;
        }
        else
        {
                $newysize = $newxsize / ($orig_size[0]/$orig_size[1]);
                $adjustX = 0;
                $adjustY = ($maxY - $newysize)/2;
        }
Danne VMedlem sedan aug. 20068 090 inlägg
#5

Nej, inte allt det där... :) Jag kanske uttryckte mig dåligt....

Öppna en sida med tumnaglarna som du skriver om i en vanlig webbläsare
Välj "Visa källa" eller vad det kan heta i din webbläsare, dvs så att du ser koden.
Kopiera koden mellan <body> och </body> (så länge. Mer kanske behövs senare) så att vi ser om man kan formatera tumnaglarna på nåt sätt...

Eller:

Ge en länk till en sida med tumnaglarna så kan vi se. T.o.m. bättre än första förslaget.

jleeMedlem sedan dec. 2002378 inlägg
#6

Ok, här kommer visa källa kod:

<table width=100% cellpadding="2" class="bakis" >

<tr><td width=21% valign="top"><div align="left">

     <h3><strong>&nbsp;&nbsp;&nbsp;&nbsp;YD 121</strong></h3>

     <table width="442" border="0" cellpadding="5" cellspacing="5">
       <tr>
         <td><div align="center" class="ml"><script type="text/javascript">//<![CDATA[
            document.write('<a href="shop_image/product/132296df75d5c03cc7fe8a70fd9f3219.jpg" title="" rel="lightbox"><img src="show_image_in_imgtag.php?filename=c0da96c9d61e0e057bbefa5967b62705.jpg&newxsize=120&newysize=120&fileout=" width="78" height="120" alt="YD 121" border="0" /><br/>Visa bild i full storlek</a>');
            //]]></script>
<noscript>
            <a href="shop_image/product/132296df75d5c03cc7fe8a70fd9f3219.jpg" target="_blank" title=""><img src="show_image_in_imgtag.php?filename=c0da96c9d61e0e057bbefa5967b62705.jpg&newxsize=120&newysize=120&fileout=" width="78" height="120" alt="YD 121" border="0" /><br/>Visa bild i full storlek</a>
            </noscript>
</div></td>
         <td width="302" valign="top"><div align="center"><p>
Storlek 9x20/21, 10x20/21<br />
Glas: D4-12 LE klart. SP2:2<br />
<br />
Utf&ouml;rande: Vit, Kul&ouml;r alt Teak<br />
<br />
Bildens d&ouml;rr &auml;r m&aring;lad i NCS S4050-Y90R
</p>
</div></td>
       </tr>
       <tr>
         <td>&nbsp;</td>
         <td><div align="center"></div></td>
       </tr>
     </table>
     <br />
</div>
<div align="center"><A HREF="javascript:history.go(-1)"><< Tillbaka till översikten</A></div>

</td>

</tr>

</table>
Danne VMedlem sedan aug. 20068 090 inlägg
#7

Nej du. Det kommer nog inte att funka med CS som jag trodde. Finns inte några id att jobba med. Du kan ju testa att lägga in detta i din stilmall:

.bakis img {
width:80px
}

Dessutom har jag gjort ett misstag. Jag förutsatte att du vill göra bilden mindre än vad den är. Det kan man göra utan att bildens kvalité blir sådär jättemycket sämre - bara litegrann. Om detta sättet trots allt fungerar och du vill göra bilden större så kommer den att "pixelera". På svenska betyder det att den kommer att se förjävlig ut.

Du måste nog in i koden och rota ändå tror jag. Har inte tid att titta om man kan ändra i koden du klistrat in i tidigare inläggen, och jag vet inte om jag ens klara av att klura ut hur man gör om jag hittar stället. Får se. jag återkommer.

jleeMedlem sedan dec. 2002378 inlägg
#8

ok tack ändå. .bakis är bakgrundsbilden under thumbnailen så den ska inte ändras.
Vill bara förstora bilden lite grann så den kommer inte att se jättedålig ut men håller med om att det är svårt att reda ut hur man gör....
Återkom gärna om du får en ide´. tack!

PeddaMedlem sedan juni 20006 032 inlägg
#9
function Img2Thumb($filename, $newxsize=60, $newysize=60, $fileout='',
		$thumbMaxSize=0, $bgred=0, $bggreen=0, $bgblue=0)

Verkar som att storleken på bilden sätts här till 60*60 ($newxsize och $newysize)

jleeMedlem sedan dec. 2002378 inlägg
#10

Bra tanke men det hände inget när jag ändrade till 200x200. Problemet är att det är en Joomla fil och det finns en config fil som man ställer in bredd+höjd på bilden. På sidan som som visar alla bilderna vill jag ha storleken från config filen men vill manipulera det som visas på detaljsidan. Det måste gå på något sätt..kanske...

144 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)