webForumDet fria alternativet

Skapa miniatyrer från bildmapp (dålig kvalité)

PHP

4 svar · 769 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Jag använder följande kod för att skapa två olika miniatyrer från en bildmapp på servern. Kvalitén på bilderna blir usel, trots att jag har sett till "90".

function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth )
{
  $dir = opendir( $pathToImages );

  while (false !== ($fname = readdir( $dir ))) {
    $info = pathinfo($pathToImages . $fname);

    if ( strtolower($info['extension']) == 'jpg')
    {

	if (stristr($info['filename'], "normal_") === FALSE) 
       // Skulle även vilja exkludera "thumb_", men vet inte hur jag lägger till det.
	{ 

      echo "Skapar miniatyr för <b>{$fname}</b><br />";

      $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
      $width = imagesx( $img );
      $height = imagesy( $img );

      $new_width = $thumbWidth;
      $new_height = floor( $height * ( $thumbWidth / $width ) );

      $tmp_img = imagecreatetruecolor( $new_width, $new_height );

      imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height ); 

	$randFilename = uniqid("img_"); 
	$newFilename = $randFilename.".".$info['extension'];

      	imagejpeg( $tmp_img, "{$pathToThumbs}{$newFilename}", 90 ); 

	copy("{$pathToImages}{$fname}", "test/{$newFilename}"); 

	list($width, $height) = getimagesize("{$pathToImages}{$fname}"); 
	$storlek = filesize("{$pathToImages}{$fname}"); 

	$medlem = 1;
	$kategori = 5;
	$kommentar = sqlesc($_POST["kommentar"]); 

	$in = array("-", "_", "xxx", " cover ", ".jpg");
	$out = array(" ", " ", "", "", ""); 

   	$title = strtolower(str_replace($in,$out,"{$fname}"));

	mysql_query("INSERT INTO bilder (datum, anvandare, kategori, filnamn, titel, kommentar, bredd, hojd, storlek) 
		      VALUES(NOW(), $medlem, $kategori, '$newFilename', '$title', $kommentar, $width, $height, $storlek)") 
			or sqlerr(__FILE__, __LINE__);

    }
  } 
}
  closedir( $dir );
}

createThumbs("upload/","mini/",330); 
createThumbs("upload/","mellan/",690);

Jag vill INTE skapa miniatyrer av bilder som har ordet "normal_" eller "thumb_" i filnamnet.

if (stristr($info['filename'], "normal_") === FALSE) 
// Skulle även vilja exkludera "thumb_", men vet inte hur jag lägger till det.

Är tacksam för all hjälp. :birp

Medlem sedan juni 20034 013 inlägg
#2

Använd imagecopyresampled i stället för imagecopyresized. Det är nog där du får den dåliga bildkvaliteten, snarare än av jpegkompressionen. Jpegkompressionen kan du nog efter den manövern ställa ner till 75 och ändå få bättre kvalitet.

Medlem sedan juli 20041 271 inlägg
#3

tydal skrev:

Använd imagecopyresampled i stället för imagecopyresized. Det är nog där du får den dåliga bildkvaliteten, snarare än av jpegkompressionen. Jpegkompressionen kan du nog efter den manövern ställa ner till 75 och ändå få bättre kvalitet.

Aha.. ska testa med det.

Hur lägger jag till två "argument" till koden nedan, (normal_ och thumb_)? :r

if (stristr($info['filename'], "normal_") === FALSE)
Medlem sedan juni 20034 013 inlägg
#4

Om jag förstått dig rätt vill du alltså att if-uttrycket ska vara sant om filnamnet inte innehåller "normal_" =och= filnamnet inte innehåller "thumb_". Och skrivs &&

if (stristr($info['filename'], "normal_") === FALSE && stristr($info['filename'], "thumb_") === FALSE)

Medlem sedan juli 20041 271 inlägg
#5

tydal skrev:

Om jag förstått dig rätt vill du alltså att if-uttrycket ska vara sant om filnamnet inte innehåller "normal_" =och= filnamnet inte innehåller "thumb_". Och skrivs &&

if (stristr($info['filename'], "normal_") === FALSE && stristr($info['filename'], "thumb_") === FALSE)

Korrekt! *tror jag*
Har för mig att jag redan har testat detta, men ÄNDÅ skapas miniatyrer av bilder med "thumb_" eller "normal_" i filnamnet.

Jag vill alltså INTE skapa miniatyrer av bilder som har något av orden i filnamnet.

EDIT: Glöm det, det verkar fungera nu. *skumt*

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)