---
title: "Skapa miniatyr från del av bild?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/182333-skapa-miniatyr-från-del-av-bild"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Guldstrand"
published: "2010-02-03T21:58:02.000Z"
updated: "2010-02-04T16:50:46.000Z"
replies: 6
views: 785
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/182333-skapa-miniatyr-från-del-av-bild"
---

# Skapa miniatyr från del av bild?

## #1 — Guldstrand, 2010-02-03T21:58Z

Hur löser jag det enklast om jag endast vill skapa en miniatyr från en liten del av en bild (centrerat)?  \*lite svårt att förklara\*

Just nu använder jag följande kod för att skapa miniatyrer:

```php
function thumb_pic($src, $dst, $maxW = 100, $maxH = 100) {
   $imagesize = getimagesize($src);
   $quality = 100;
   $srcX = 0;
   $srcY = 0;
   $orgW = $imagesize[0];
   $orgH = $imagesize[1];
 
   switch ($imagesize[2]) {
    case 1: // gif
      $src_im = imagecreatefromgif($src);
      break;
      
    case 2: // jpg
      $src_im = imagecreatefromjpeg($src);
      break;
      
    case 3: // png
      $src_im = imagecreatefrompng($src);
      break;
      
    default:
       trigger_error("Okänd bild-typ", E_USER_ERROR);
      break;
   }
   
   if ($orgW > $maxW) {
      $dstW = $maxW;
      $dstH = round($orgH * $dstW / $orgW);
   } else {
      $dstW = $orgW;
      $dstH = $orgH;
   }
   
   if ($dstH > $maxH) {
      $dstH = $maxH;
      $dstW = round($orgW * $dstH / $orgH);
   }
   
   $dst_im = imagecreatetruecolor($dstW, $dstH);
   imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $orgW, $orgH);
   imagejpeg($dst_im, $dst, $quality);
   imagedestroy($dst_im);
   imagedestroy($src_im);
}
```

Miniatyren som skapas måste ha följande storlek:
690 × 396 pixlar (räknat från ***mitten*** av originalbilden)

(bifogar exempel)

Bilagor:

- [exempel_del-av-bild.jpg](https://www.webforum.nu/a/21327.jpg)

Permalänk: https://www.webforum.nu/p/182333

## #2 — fiddler, 2010-02-03T23:29Z

Skriptet från denna tråd kan väl vara en bra start: <http://www.webforum.nu/showthread.php?t=173981>

Permalänk: https://www.webforum.nu/p/2225071

## #3 — Guldstrand, 2010-02-03T23:49Z

> **[fiddler skrev:](https://www.webforum.nu/p/1496903)**
>
> Skriptet från denna tråd kan väl vara en bra start: <http://www.webforum.nu/showthread.php?t=173981>

**Kanon!** Det verkar vara precis det jag söker.

Permalänk: https://www.webforum.nu/p/2225073

## #4 — Guldstrand, 2010-02-04T00:15Z

En sak till...  :r

Hur kan jag slå ihop min nuvarande kod:

```php
function thumb_pic($src, $dst, $maxW = 100, $maxH = 100) {
   $imagesize = getimagesize($src);
   $quality = 100;
   $srcX = 0;
   $srcY = 0;
   $orgW = $imagesize[0];
   $orgH = $imagesize[1];
 
   switch ($imagesize[2]) {
    case 1: // gif
      $src_im = imagecreatefromgif($src);
      break;
      
    case 2: // jpg
      $src_im = imagecreatefromjpeg($src);
      break;
      
    case 3: // png
      $src_im = imagecreatefrompng($src);
      break;
      
    default:
       trigger_error("Okänd bild-typ", E_USER_ERROR);
      break;
   }

   
   if ($orgW > $maxW) {
      $dstW = $maxW;
      $dstH = round($orgH * $dstW / $orgW);
   } else {
      $dstW = $orgW;
      $dstH = $orgH;
   }
   
   if ($dstH > $maxH) {
      $dstH = $maxH;
      $dstW = round($orgW * $dstH / $orgH);
   }
   
   $dst_im = imagecreatetruecolor($dstW, $dstH);
   imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $orgW, $orgH); 

   imagejpeg($dst_im, $dst, $quality);
   imagedestroy($dst_im);
   imagedestroy($src_im);
}
```

..med denna:

```php
function thumb($pic)
{
	
	$x = 690; //Ny bredd på bilden
	$y = 396; //Ny höjd på bilden

	// Läser in den stora bilden och kollar storleken på den.
	$stor_bild = imagecreatefromjpeg($pic);
	$stor_x = imagesx($stor_bild);
	$stor_y = imagesy($stor_bild);
	
	//Plockar ut mitten
	$src_x = floor($stor_x/2 - $x);
	$src_y = floor($stor_y/2 - $y);

	// Skapar bilden.
	$thumb = imagecreatetruecolor($x, $y);
	imagecopyresampled($thumb, $stor_bild, 0, 0, $src_x, $src_y, $x, $y, $x*2, $y*2);

	// Skriver ut bilden
	imagejpeg ($thumb,NULL,80);

	//Tar bort bilderna ur minnet.
	imagedestroy($thumb);
	imagedestroy($stor_bild);
}
```

Med min nuvarande kod, så skapas två olika miniatyrer, (en liten och en mellan).

Liten: 330 × 190 pixlar
Mellan: 690 × 396 pixlar

Permalänk: https://www.webforum.nu/p/2225075

## #5 — Guldstrand, 2010-02-04T14:59Z

Jag är oerhört tacksam för hjälp med mitt senaste inlägg ovan.
(Har stirrat mig blind.)

Permalänk: https://www.webforum.nu/p/2225105

## #6 — fiddler, 2010-02-04T16:40Z

Jag kan kolla på den vid tillfälle. Dock ska jag snart iväg igen...

Permalänk: https://www.webforum.nu/p/2225111

## #7 — Guldstrand, 2010-02-04T16:50Z

> **[fiddler skrev:](https://www.webforum.nu/p/1496946)**
>
> Jag kan kolla på den vid tillfälle. Dock ska jag snart iväg igen...

**Underbart!** Tack på förhand...  :e

Permalänk: https://www.webforum.nu/p/2225112

---

Tråden på webben: https://www.webforum.nu/amne/php/182333-skapa-miniatyr-från-del-av-bild
