webForumDet fria alternativet

FTP,GD, thumbnails

7 svar · 394 visningar · startad av Qonos

QonosMedlem sedan sep. 2000451 inlägg
#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.

DufferMedlem sedan mars 2003409 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?

QonosMedlem sedan sep. 2000451 inlägg
#3

Oppps :( png menade jag inte psd :) sorry

GD = bundled (2.0.23 compatible)

DufferMedlem sedan mars 2003409 inlägg
#4

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

QonosMedlem sedan sep. 2000451 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

QonosMedlem sedan sep. 2000451 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");
		}
	}
}
QonosMedlem sedan sep. 2000451 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 :)

DufferMedlem sedan mars 2003409 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

Genererad på 370 ms · cache AV · v20260730165559-full.f96bc7eb