webForumDet fria alternativet

FTP,GD, thumbnails

PHP

7 svar · 394 visningar · startad av Qonos

Medlem sedan sep. 2000438 inlägg
Frågan#1

godmorgon...

Jag har problem med GD, och hoppas att det finns någon vänlig själ som vill hjälpa mig med detta..

Jag laddar upp en bild med koden nedan


	if (!empty($HTTP_POST_FILES["varFileName"]) && $upload == true)
	{
		if ($ftp = ftp_connect(FTP_HOST,FTP_PORT)) 
		{ 
			if (@ftp_login($ftp, FTP_USERNAME, FTP_PASSWORD)) 
			{ 
				if (ftp_chdir($ftp, FTP_WEB_DIR."images/users/")) 
				{ 

					deleteImage();
					if (ftp_put($ftp,$_SESSION["member_id"].$filetype, $HTTP_POST_FILES['varFileName']['tmp_name'], FTP_BINARY)) 
					{
 
						unlink($HTTP_POST_FILES['varFileName']['tmp_name']); 
					} 
					else 
					{ 

						echo "File upload failed<br>\n"; 
					} 
				} 
				else 
				{ 

					echo "ftp_chdir() failed<br>\n"; 
				} 
			} 
			else 
			{ 

				echo "ftp_login() failed<br>\n"; 
			} 
		ftp_close($ftp); 
		}

		else
			echo "ftp_connect() failed<br>\n"; 
	}

Sen efter det vill jag skapa 2 thumbnails av den bilden och lägga på samma plats.

namnen på dessa skall vara

$_SESSION["member_id"].".75x100".$filetype
$_SESSION["member_id"].".150x200".$filetype

Jag har letat på nätet och provat en del olika script jag har hittat där, och de flesta verkar bara fixa det hela om det är en jpg fil, men jag vill att det skall fungera på jpg,gif,psd

Sen har jag iofs inte fått någon att fungera heller. Så jag undrar om det är någon som har en bra funktion som jag kan använda och modifiera så den passar mig, eller om någon kan skriva lite tips på hur jag skalll komma igång för att få detta att fungera.. ja eller en länk till ett script som fixar detta.

Medlem sedan mars 2003429 inlägg
#2

jpg och gif går lätt med PHP, men psd blir det nog mer problem med eftersom det är Adobes egna filformat som hanterar lager osv.
men med gif och jpg använder du imagegif och imagejpg för att spara dina thumbs som du har förminskat med t.ex. imagecopyresized och imagecreate

Vilken GD version har du?

Medlem sedan sep. 2000438 inlägg
#3

Oppps :( png menade jag inte psd :) sorry

GD = bundled (2.0.23 compatible)

Medlem sedan mars 2003429 inlägg
#4

men isåfall samma sak med png imagepng... fungerar inte detta för dig?

Medlem sedan sep. 2000438 inlägg
#5

skalll ta och göra ett försök till, fick det inte att fungera innan men nu vet jag att jag e på rätt väg iaf.. skall testa.. återkommer med svar om det gick eller inte.. tack så länge

Medlem sedan sep. 2000438 inlägg
#6

problem med imageGIF

jag använder scriptet nedan för att skapa thumbnails, men när jag skall göra detta med en gif bild får jag detta felmeddelandet:

Fatal error: Call to undefined function: imagegif()

det verkar inte som GD stödjer imageGIF

Note: Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library. Support is expected to return in a version subsequent to the rerelease of GIF support in the GD library in mid 2004. For more information, see the GD Project site.

läser jag på GD Project site så hittar jag

07/21/04: gd 2.0.28 has been released. gd 2.0.28 restores support for reading and writing GIF images. There is also a fix for a possible problem in gdImageTrueColorToPalette.

och på servern var det inte uppgraderat till den versionen, jag har bett de göra det så nu får vi se vad som händer. Men finns det nått sätt att lösa det OM de inte uppgraderar GD?

##############################################
# Shiege Iseng Resize Class
# 11 March 2003
# [email]shiegege@yahoo.com[/email]
# [url]http://kentung.f2o.org/scripts/thumbnail/[/url]
################
# Thanks to :
# Dian Suryandari <dianhau@yahoo.com>
/*############################################
Sample :
$thumb=new thumbnail("./shiegege.jpg");		// generate image_file, set filename to resize
$thumb->size_width(100);					// set width for thumbnail, or
$thumb->size_height(300);					// set height for thumbnail, or
$thumb->size_auto(200);						// set the biggest width or height for thumbnail
$thumb->jpeg_quality(75);					// [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->show();								// show your thumbnail
$thumb->save("./huhu.jpg");					// save your thumbnail to file
----------------------------------------------
Note :
- GD must Enabled
- Autodetect file extension (.jpg/jpeg, .png, .gif, .wbmp)
  but some server can't generate .gif / .wbmp file types
- If your GD not support 'ImageCreateTrueColor' function,
  change one line from 'ImageCreateTrueColor' to 'ImageCreate'
  (the position in 'show' and 'save' function)
*/############################################

class thumbnail
{
	var $img;

	function thumbnail($imgfile)
	{
		//detect image format
		$this->img["format"]=ereg_replace(".*\.(.*)$","\\1",$imgfile);
		$this->img["format"]=strtoupper($this->img["format"]);
		if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
			//JPEG
			$this->img["format"]="JPEG";
			$this->img["src"] = ImageCreateFromJPEG ($imgfile);
		} elseif ($this->img["format"]=="PNG") {
			//PNG
			$this->img["format"]="PNG";
			$this->img["src"] = ImageCreateFromPNG ($imgfile);
		} elseif ($this->img["format"]=="GIF") {
			//GIF
			$this->img["format"]="GIF";
			$this->img["src"] = ImageCreateFromGIF ($imgfile);
		} elseif ($this->img["format"]=="WBMP") {
			//WBMP
			$this->img["format"]="WBMP";
			$this->img["src"] = ImageCreateFromWBMP ($imgfile);
		} else {
			//DEFAULT
			echo "Not Supported File";
			exit();
		}
		@$this->img["lebar"] = imagesx($this->img["src"]);
		@$this->img["tinggi"] = imagesy($this->img["src"]);
		//default quality jpeg
		$this->img["quality"]=75;
	}

	function size_height($size=100)
	{
		//height
    	$this->img["tinggi_thumb"]=$size;
    	@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
	}

	function size_width($size=100)
	{
		//width
		$this->img["lebar_thumb"]=$size;
    	@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
	}

	function size_auto($size=100)
	{
		//size
		if ($this->img["lebar"]>=$this->img["tinggi"]) {
    		$this->img["lebar_thumb"]=$size;
    		@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
		} else {
	    	$this->img["tinggi_thumb"]=$size;
    		@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
 		}
	}

	function jpeg_quality($quality=75)
	{
		//jpeg quality
		$this->img["quality"]=$quality;
	}

	function show()
	{
		//show thumb
		@Header("Content-Type: image/".$this->img["format"]);

		/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
		$this->img["des"] = ImageCreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
    		@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

		if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
			//JPEG
			imageJPEG($this->img["des"],"",$this->img["quality"]);
		} elseif ($this->img["format"]=="PNG") {
			//PNG
			imagePNG($this->img["des"]);
		} elseif ($this->img["format"]=="GIF") {
			//GIF
			imageGIF($this->img["des"]);
		} elseif ($this->img["format"]=="WBMP") {
			//WBMP
			imageWBMP($this->img["des"]);
		}
	}

	function save($save="")
	{
		//save thumb
		if (empty($save)) $save=strtolower("./thumb.".$this->img["format"]);
		/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
		$this->img["des"] = ImageCreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
    		@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

		if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
			//JPEG
			imageJPEG($this->img["des"],"$save",$this->img["quality"]);
		} elseif ($this->img["format"]=="PNG") {
			//PNG
			imagePNG($this->img["des"],"$save");
		} elseif ($this->img["format"]=="GIF") {
			//GIF
			imageGIF($this->img["des"],"$save");
		} elseif ($this->img["format"]=="WBMP") {
			//WBMP
			imageWBMP($this->img["des"],"$save");
		}
	}
}
Medlem sedan sep. 2000438 inlägg
#7

ja just det.. sen kan jag använda

$thumb->size_width(100);
$thumb->size_height(66);

men sätter jag dessa två så skalar den först bilden till 100 och sen till 66 så jag får den inte att ta båda värdena på en o samma gång. Någon som har koll på hur en sådan funktion ser ut som "tvingar" bilden att bli en viss storlek.. skit samma om bilden kommer att se skum ut :)

Medlem sedan mars 2003429 inlägg
#8
function resize_jpg($img,$w) 
{ 
        $imagedata = getimagesize($img); 
        $h = ($w / $imagedata[0]) * $imagedata[1];  /// "DENNA RADEN"
        $thumb = imagecreate ($w, $h); 
        if ($imagedata[2] == 2) $image = ImageCreateFromJpeg($img); 
        else { 
        		
                header("Location: $img"); 
                die(); 
        } 
        imagecopyresized ($thumb, $image, 0, 0, 0, 0, $w, $h, $imagedata[0], $imagedata[1]); 
        imagejpeg($thumb, "testthumb.jpg");
}

Anropa funktionen genom att ange vilken bild och bredd du vill ha. Vill du skippa att den anpassar sig efter hur bilden såg ut innan tabort "denna raden" och ersätt den med att specificera $h på något ställe

141 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)