imagemagick

Status
Niet open voor verdere reacties.

pbd4499

Gebruiker
Lid geworden
29 jun 2009
Berichten
185
Weet iemand toevallig of je imagemagic als php in je site kunt verwerken of is het een vereiste dat de hostingprovidor hier eerst iets voor installeert?

pbd
 
Je wilt neem ik aan via commands afbeeldingen gaan bewerken? Het lijkt erop, hoewel ik imagemagic verder niet ken, dat dat inderdaad op de server geïnstalleerd moet zijn.

Je zou trouwens eens kunnen kijken naar de GD lib (als je dat niet al gedaan hebt ;)) die is wat meer 'common'. Vaak is die wel geïnstalleerd als je provider PHP ondersteunt.
 
image magick

dank voor je bericht.

en waar vind ik die gd lib?
 
Als je phpinfo(); ergens op een pagina zet kun je zien welke extensies geïnstalleerd zijn.
 
Meestal is die al geinstalleerd. Dat kun je zien door phpinfo() in een php-bestandje te zetten en die pagina dan op te vragen. Daar staat dan ergens de versie van GD bij (als ie geïnstalleerd is).

Je hoeft het dus niet nog op te zoeken en te installeren.

@SvU: je was me voor ;)
 
Met phpinfo had ik al gekeken, maar helaas niets van imagemagick kunnen aantreffen :-(

Leuke slogan!!!
 
We bedoelden dat je op die manier kunt zien of GD geïnstalleerd is.
 
image magick

Heb phpinfo net gedraaid en heb gezocht met ctrl-f en stel vast dat imagemagick niet kan worden gevonden en zelfs magic niet.

Weten jullie een goede hostingprovidor die het wel ondersteund waarna ik de desbetreffende site naar kan doorverwijzen voor dat ene geval?

mvg


pbd
 
Ik had al aangegeven, ImageMagic is vrijwel nooit standaard geïnstalleerd. Met phpinfo() kun je kijk of de "GD-library" geïnstalleerd is. Die heeft vrijwel alle functies die je nodig hebt om afbeeldingen te bewerken.

Op het webhostingtalk.nl forum las ik dat http://www.vivor.net/ ondersteuning voor ImageMagic biedt. Maar nogmaals, je kunt je waarschijnlijk beter verdiepen in GD.
 
Laatst bewerkt:
image magick

Hallo Eric, dank je voor je snelle reactie.

Heb net wederom met phpinfo gezocht en stel vast dat "GD-library" eveneens niet voorkomt.

Ben je bereid tegen betaling een scriptje voor me te willen schrijven? Ik betaal je ervoor.

Laat maar weten, doch svp via de prive e-mail.

mvg


Pbd
 
Nee, dat soort dingen doe ik niet meer, en dat zou ook niet eerlijk zijn, aangezien de meeste scripts kant en klaar op internet te vinden zijn.

Als je eens vertelt wat je precies wilt, kunnen we je eens helpen zoeken en aanpassen.
 
image magick

Ok. Vreemd, ben ik eerlijk gezegd nooit gewend.
script1:
PHP:
 (upload.php)


<html>
	<head>
		<title>Multiple image upload</title>
	</head>

	<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<?
		// File Maximum size 
		$max_size = 400000;
		$to =$_POST['email'];
		$from = "admin@localhost";
		$subject ="Images with the Changed Resolution";
		$message = "My message";
		$headers = "From: ($from)";
		$semi_rand = md5(time());
		$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
		// headers for attachment
		$headers .= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\"";
		// multipart boundary
		$message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/plain; charset=\"iso-8859-1\"\n"."Content-Transfer-Encoding:7bit\n\n".$message."\n\n";
		$message = "--{$mime_boundary}\n";
		// Checking whether any field is empty
		foreach($_FILES['images']['name'] as $image){
			if($image==""){
				echo "Some fields are not filled!<br><a href='javascript:history.go(-1);'>Back</a>"; exit;
			}
		}
		while(list($key,$value) = each($_FILES['images']['name'])){
			if($_FILES['images']['size'][$key]>$max_size){ echo "The file is too big<br><a href='javascript:history.go(-1);'>Back</a>"; exit; }
			// Fetching files extensions
			$ext = substr($value, strrpos($value, '.') + 1);
			$ext=strtolower($ext);
			if($ext=="bmp"||$ext=="jpg"||$ext=="png"||$ext=="jpeg"){
				if(!empty($value)){
					$filename = $value;
					$filename=str_replace(" ","_",$filename);
					$pos = strripos($filename, '.');
					$filename=substr($filename, 0, $pos);
					$add= "upimages/".$filename."_".rand().".".$ext;
					// Add _ inplace of blank space in file name, you can remove this line
					// echo $_FILES['images']['type'][$key];
					// echo "<br>";
					copy($_FILES['images']['tmp_name'][$key], $add);
					chmod("upimages",0777);
					$image=new Imagick($add);
					$image->setImageResolution(600,600);
					$image->writeImage($add);
					$array=$image->getImageResolution();
					$file = fopen($add,"rb");
					$data = fread($file,filesize($add));
					fclose($file);
					$data = chunk_split(base64_encode($data));
					$message.="Content-Type:{\"application/octet-stream\"};\n"."name=\"$add\"\n".
					"Content-Disposition:attachment;\n"." filename=\"$add\"\n".
					"Content-Transfer-Encoding: base64\n\n".$data."\n\n";
					$message.="--{$mime_boundary}\n";
			}			
		} else {
			echo "Image file type is wrong.Select(JPG,BMP,PNG)<br> <a href='javascript:history.go(-1);'>Back</a>"; exit;
		}
	}
	$message .= "--{$mime_boundary}--\n";
	$ok = @mail($to, $subject,$message, $headers);
	if ($ok) {
		echo "<p>mail sent to $to!</p><a href='index.php'>More</a>";
	} else {
		echo "<p>mail could not be sent!</p>";
	}
?> 
	</body>
</html>


=============================================

script2: (index.php)

<?php
	$max_no_img=2; // Maximum number of images value to be set here
?>
<html>
	<head>
		<title>Input Images</title>
		<script type="text/javascript">

	function validate(){
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		var str= document.frm.email.value;
		if(document.frm.uname.value==""){
			alert("Please enter your name!");
			document.frm.uname.focus();
			return false;
		}

		if(document.frm.email.value==""){
			alert("Please enter email address!");
			document.frm.email.focus();
			return false;
		}

		if(!filter.test(str)){
			alert("Please insert valid email address!");
			document.frm.email.focus();
			return false;
		}
		return true;
	}
	</script>
</head>

<body bgcolor="#ffffcc">

<center>

<form name="frm" method='post' action='upload.php' enctype='multipart/form-data'>
<table border="0" cellpadding="0" cellspacing="0" width="55%">
	<tr>
	<td width="37%" bgcolor="#FCFAD8">
		<h2 align="center">
		<font color="#000080">User Form</font></h2>
	</td>
	</tr>
	<tr>
	<td width="37%" align="right" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="left"><font color="#800000"><b>Your Name </b></font><input type="text" name="uname"></p>
	</td>
	</tr>
	<tr>
	<td width="37%" align="right" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="left"><font color="#800000"><b>Your Email&nbsp; </b></font><input type="text" name="email"></p>
	</td>
	</tr>
	<tr>
		<td width="37%" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
			 <table border="0" cellpadding="0" cellspacing="0" width="480">
				<td width="137">
					<? for($i=1;$i<=$max_no_img;$i++){ ?>
					<tr>
						<td width="137"><font color="#800000"><b>Attachment <?=$i?>:</b></font></td>
						<td width="339"><input type="file" name='images[<?=$i?>]' class='bginput'></td>
					</tr>
					<td width="137">
					<?}?>
			</table>
		</td>
	</tr>
	<tr>
	<td width="37%" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="center">&nbsp;&nbsp; </td>
	</tr>
	<tr>
	<td width="37%" bgcolor="#DFDFFF" bordercolor="#DFDFFF">
		<p align="center"><input type="submit" value="Submit" onClick="return validate();"></td>
	</tr>
</table>
</form>
</center>
</body>
</html>
 
Laatst bewerkt door een moderator:
Als je je code even tussen [PHP ] [ /PHP] of [HTML ] [ /HTML] tags zet (zonder de spaties), is het was leesbaarder.

Daarnaast, wat ben je nooit gewend?

En wat moeten we nu met die lap code? Wat wil je bereiken, wat werkt er niet?
 
PHP:
(index.php)
<?php
	$max_no_img=2; // Maximum number of images value to be set here
?>
<html>
	<head>
		<title>Input Images</title>
		<script type="text/javascript">

	function validate(){
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		var str= document.frm.email.value;
		if(document.frm.uname.value==""){
			alert("Please enter your name!");
			document.frm.uname.focus();
			return false;
		}

		if(document.frm.email.value==""){
			alert("Please enter email address!");
			document.frm.email.focus();
			return false;
		}

		if(!filter.test(str)){
			alert("Please insert valid email address!");
			document.frm.email.focus();
			return false;
		}
		return true;
	}
	</script>
</head>

<body bgcolor="#ffffcc">

<center>

<form name="frm" method='post' action='upload.php' enctype='multipart/form-data'>
<table border="0" cellpadding="0" cellspacing="0" width="55%">
	<tr>
	<td width="37%" bgcolor="#FCFAD8">
		<h2 align="center">
		<font color="#000080">User Form</font></h2>
	</td>
	</tr>
	<tr>
	<td width="37%" align="right" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="left"><font color="#800000"><b>Your Name </b></font><input type="text" name="uname"></p>
	</td>
	</tr>
	<tr>
	<td width="37%" align="right" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="left"><font color="#800000"><b>Your Email&nbsp; </b></font><input type="text" name="email"></p>
	</td>
	</tr>
	<tr>
		<td width="37%" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
			 <table border="0" cellpadding="0" cellspacing="0" width="480">
				<td width="137">
					<? for($i=1;$i<=$max_no_img;$i++){ ?>
					<tr>
						<td width="137"><font color="#800000"><b>Attachment <?=$i?>:</b></font></td>
						<td width="339"><input type="file" name='images[<?=$i?>]' class='bginput'></td>
					</tr>
					<td width="137">
					<?}?>
			</table>
		</td>
	</tr>
	<tr>
	<td width="37%" bordercolor="#DFDFFF" bgcolor="#DFDFFF">
		<p align="center">&nbsp;&nbsp; </td>
	</tr>
	<tr>
	<td width="37%" bgcolor="#DFDFFF" bordercolor="#DFDFFF">
		<p align="center"><input type="submit" value="Submit" onClick="return validate();"></td>
	</tr>
</table>
</form>
</center>
</body>
</html>

=====
(upload.php:)

<html>
	<head>
		<title>Multiple image upload</title>
	</head>

	<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<?
		// File Maximum size 
		$max_size = 400000;
		$to =$_POST['email'];
		$from = "yadmin@localhost";
		$subject ="Images with the Changed Resolution";
		$message = "My message";
		$headers = "From: ($from)";
		$semi_rand = md5(time());
		$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
		// headers for attachment
		$headers .= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\"";
		// multipart boundary
		$message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/plain; charset=\"iso-8859-1\"\n"."Content-Transfer-Encoding:7bit\n\n".$message."\n\n";
		$message = "--{$mime_boundary}\n";
		// Checking whether any field is empty
		foreach($_FILES['images']['name'] as $image){
			if($image==""){
				echo "Some fields are not filled!<br><a href='javascript:history.go(-1);'>Back</a>"; exit;
			}
		}
		while(list($key,$value) = each($_FILES['images']['name'])){
			if($_FILES['images']['size'][$key]>$max_size){ echo "The file is too big<br><a href='javascript:history.go(-1);'>Back</a>"; exit; }
			// Fetching files extensions
			$ext = substr($value, strrpos($value, '.') + 1);
			$ext=strtolower($ext);
			if($ext=="bmp"||$ext=="jpg"||$ext=="png"||$ext=="jpeg"){
				if(!empty($value)){
					$filename = $value;
					$filename=str_replace(" ","_",$filename);
					$pos = strripos($filename, '.');
					$filename=substr($filename, 0, $pos);
					$add= "upimages/".$filename."_".rand().".".$ext;
					// Add _ inplace of blank space in file name, you can remove this line
					// echo $_FILES['images']['type'][$key];
					// echo "<br>";
					copy($_FILES['images']['tmp_name'][$key], $add);
					chmod("upimages",0777);
					$image=new Imagick($add);
					$image->setImageResolution(600,600);
					$image->writeImage($add);
					$array=$image->getImageResolution();
					$file = fopen($add,"rb");
					$data = fread($file,filesize($add));
					fclose($file);
					$data = chunk_split(base64_encode($data));
					$message.="Content-Type:{\"application/octet-stream\"};\n"."name=\"$add\"\n".
					"Content-Disposition:attachment;\n"." filename=\"$add\"\n".
					"Content-Transfer-Encoding: base64\n\n".$data."\n\n";
					$message.="--{$mime_boundary}\n";
			}			
		} else {
			echo "Image file type is wrong.Select(JPG,BMP,PNG)<br> <a href='javascript:history.go(-1);'>Back</a>"; exit;
		}
	}
	$message .= "--{$mime_boundary}--\n";
	$ok = @mail($to, $subject,$message, $headers);
	if ($ok) {
		echo "<p>mail sent to $to!</p><a href='index.php'>More</a>";
	} else {
		echo "<p>mail could not be sent!</p>";
	}
?> 
	</body>
</html>

De lap code zou moeten bewerkstelligen dat:
- x aantal images, groter dan 600dpi, worden verkleind tot 600dpi;
- vervolgens dienen die te worden gestuurd naar een ingesteld e-mail address compleet met het e-mail address van de gebruiker (afzender).

That's it.

Wat ik nooit gewend ben is dat iemand iets voor niets deed voor me. Dat, en niets anders dan dat. Dank je. Als ik iets terug kan doen verneem ik het graag. Mijn ervaring ligt op VB/VBA/Mysql (lokale sever wel te verstaan)

Heb je ook een prive e-mail adres? Praat gemakkelijker.

mvg

Pbd
 
Laatst bewerkt door een moderator:
Begrijp ik nu goed, dat de rest van het script gewoon werkt maar dat alleen het ImageMagic gedeelte vervangen moet worden door een script voor GD?
 
Sorry voor vertraging, was erg druk op het werk vanwege een ernstig incident. Ik denk het wel Eric maar ik weet niet wat GD inhoudt. kun je me aub helpen ermee?
 
Ik wil je er wel mee helpen ja, als je me vertelt wat er precies moet gebeuren.

GD kun je zien als een enorme bak met functies, die speciaal gemaakt zijn om afbeeldingen te bewerken.

Overigens ben ik ook niet bepaald een GD specialist, maar ik kan er redelijk mee overweg.
 
Dank je voor je reactie. Nou, wat ik wil is het versturen van 2..5 images (is variabel gemaakt zoals je kon waarnemen) en die images mogen geen hogere resolutie hebben dan 600dpi dit om mensen met hoge resolutiecamera's en dit niet ZELF lager kunnen instellen toch automatisch in staat te kunnen stellen dit door de php / imagemagick software te kunnen versturen op een max. resolutie.

Ook moet het email address in de bestandsnaam van het image worden verwerkt in de juiste volgorde: mijn_email____domain.nl (4 underscores tbv het apestaartje indien dit een probleem mocht vormen in een bestandsnaam (of een andere oplossing) Plust de volgorde van de bestandsnaam (+1, +2 etc)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan