ugrás a tartalomhoz

profi képmanipuláció

Anonymous · 2006. Feb. 27. (H), 17.13
Hi all!
Van ötletetek/javaslatotok arra, hogy lehet nagyméretű és terjedelmű (bmp, stb) képeket nagyon jó minőségben - php-vel - méretezni?
Nem akartam csak úgy osztályokat hasraütésre próbálgatni - jobb lenne, ha valaki tudna ajánlani egy jót ;)
Köci
 
1

Mit értesz az alatt, hogy "jó minőségben méretezni"?

pp · 2006. Feb. 27. (H), 18.46
http://weblabor.hu/blogmarkok/11885

pp
2

re

Anonymous · 2006. Feb. 28. (K), 13.09
Arra gondoltam, hogy átméretezek egy bmp képet, pl. 25%-ára (mondjuk 640x480-as felbontásról és méretarányosan), akkor ne legyen "randa" pixeles.

Vagy esetleg egy kis mértékű nagyítás után is felismerhető legyen kedvenc pulikutyám körvonala :D
3

tudsz mutatni egy példát?

pp · 2006. Feb. 28. (K), 14.47
pp
4

Detto :D

JasonVoorhees · 2006. Már. 3. (P), 18.22
Helloztok!

Nekem is ugyanez lenne a kérdésem. Egy fórumot írok... és azt próbálom most megcsinálni, hogy feltöltik maguknak az avatar-t, és azt automatikusan átméretezi 100x100-asra vagy arányosan, úgy hogy ugyanolyan minőségű legyen.

Előre is köszi a helpet!
6

Mit értesz minőség alatt?

pp · 2006. Már. 3. (P), 20.25
Még mindig nem értem mit értetek minőségen... Az én értelmezésemben ez a feladat lehetetlen. Ha egy képet lekicsinyitesz, akkor romlik a minősége. Ez olyan min mikor van egy nagy raktárad és egy negyedakkorába költözöl az összes cuccodat nem viheted magaddal.

Szóval mit értetek minőség alatt? Az általam beküldött linken található megoldás miért nem jó?

pp
5

<Nincs cím>

Anonymous · 2006. Már. 3. (P), 19.31
7

<Nincs cím>

Anonymous · 2006. Már. 10. (P), 03.33
ehhez azert nem kell egy egesz osztaly (imho)
a napokban irtam egy par soros szkriptet, ami sima jpeg es gif kepeket kicsinyit le meretaranyosan

<?php
$image = $_REQUEST["image"];
$setWidth = $_REQUEST["setWidth"];
$setHeight = $_REQUEST["setHeight"];

if (strlen($image)) {
  ## lecsekkoljuk, hogy létező file-ról van-e szó
  if (file_exists($image)) {
    if (is_numeric($setWidth) || is_numeric($setHeight)) {
      ## leellenőrizzuk, hogy numerikus értéket tartalmaznak-e a változók
      if ($setWidth > 0 || $setHeight > 0) {
        ## file típus meghatározás: csak a JPEG-et és a GIF-et szeretjük
        $extension = explode(".",$image); 
        $extension = $extension[count($extension)-1];
        if ($extension == "jpg" || $extension == "jpeg") {
          $type = "image/jpeg";}
        elseif ($extension == "gif") {
          $type = "image/gif";}       
        
        $originalSize = getimagesize($image);
        $originalWidth = $originalSize[0];$originalHeight = $originalSize[1];
        $image = ($type == "image/jpeg") ? imageCreateFromJPEG($image) : imageCreateFromGIF($image); 
              
        $set = (isset($setWidth)) ? $setWidth : $setHeight;
        $original = (isset($setWidth)) ? $originalWidth : $originalHeight;
        $multiplier = $original / $set;
        $setWidth = round($originalWidth / $multiplier);$setHeight = round($originalHeight / $multiplier);
              
        $resizedImage = imageCreateTrueColor($setWidth,$setHeight);
        imageCopyResized($resizedImage,$image,0,0,0,0,$setWidth,$setHeight,$originalWidth,$originalHeight);
        imageDestroy($image);
        header ("Content-Type: $type");
        $done = ($type == "image/jpeg") ? imageJPEG($resizedImage) : imageGIF($resizedImage);
        imageDestroy($resizedImage);
	exit;}
      }
    }
  }
?>
nem tokeletes, de a celnak megfelel

udv,
chop
8

Építő javaslat

Anonymous · 2006. Már. 10. (P), 05.12
A file kiterjesztését csekkolhatod egyszerűbben is:
strrchr($image, ".")
Valamint célszerű a kiterjesztés írásmódját egységesíteni, mert ugye image.jpg és image.JPG is lehet a neve, és ez utóbbi már kívül esik a feltételeden, annak ellenére, hogy jpg fileról van szó. Tehát valahogy így festene a feltétel:

<?php

if ((strtolower(strrchr($image, ".")) == ".jpg") OR (strtolower(strrchr($image, ".")) == ".jpeg")) {

    $type = "image/jpeg";

} elseif (strtolower(strrchr($image, ".")) == ".gif") {

    $type = "image/gif";

}

?>
11

<Nincs cím>

Anonymous · 2006. Már. 10. (P), 14.35
a felvetes jogos, tulajdonkeppen ebben az esetben nincs szukseg ra, mert feltoltott kepeket mereteznek at, es feltolteskor egyseges filenevet kapnak. azonban tenyleg megfontolando amit irsz, thx:)
9

másik építő javaslat

Anonymous · 2006. Már. 10. (P), 10.02
én nem bíznék ennyire a fájlok kiterjesztésében. nekem már töltöttek fel bmp fájlt is .jpg kiterjesztéssel. :) egy átlagos felhasználó lementi egy weboldalról a képet, vagy megkapja e-mailben, és már el is menti a beidegződött "jépégé" kiterjesztéssel.
ezekben az esetekben nagyon jó hasznát veszem a mime_content_type függvénynek.
ha pedig a feltöltés után kell képeket átméretezni, akkor a típus automatikusan megjelenik a $_FILES tömbben. (lehet, hogy beállítástól függ...)

a minőségre pedig egy imagemagick nevű program jelentette a megoldást. aminek a meglétét ellenőrizni is lehet például egy

<?php
shell_exec("which convert");
?>
paranccsal linux alatt.

nekem még ennyivel van kiegészítve egy nagyjából hasonló képméretezős függvényem, és nagyon jól működik.

gex
10

Pear::image_transform

dtaylor · 2006. Már. 10. (P), 10.15
Szia!

Van a pear-ban egy jó csomag hozzá. Témogat gd-t, convert-et, stb.
Arányosan méretez és egyéb hasznos funkciók.

Használtam, jó.

--
[ Dönci ]