konto usunięte

Temat: image resize + crop

Mam problem bo nie wiem co jest nie tak, wg manuala chyba robie wszystko ok.

Wrzucam fotkę, robie resize i działa jak trzeba.
Teraz chciałem dodać do tego crop

czyli najpierw zmienia rozmiar, i po tym ma zrobić kadrowanie.

$imconf['image_library'] = 'GD2';
$imconf['create_thumb'] = TRUE;
$imconf['thumb_marker'] = FALSE;
$imconf['maintain_ratio'] = TRUE;
$imconf['width'] = 120;
$imconf['x_axis'] = '120';
$imconf['y_axis'] = '100';
$catphoto = "/home/public_html/img/";

if(fopen(base_url().'/img/'.$datas[$key],'r')){
$imconf['source_image'] = $catphoto.''.$datas[$key];
$this->load->library('image_lib', $imconf);
$this->image_lib->initialize($imconf);
$this->image_lib->resize();


}
// to dodałem
if(fopen(base_url().'/img/'.$datas[$key],'r')){
$imconf['source_image'] = $catphoto.''.$datas[$key];
$this->load->library('image_lib', $imconf);
$this->image_lib->initialize($imconf);
$this->image_lib->crop();
}


Dodałem ostatnią funkcję na końcu z crop
ale za cholere mi nie kadruje tego, robi tylko resize.
Co jest nie tak z tym?
Piotr Jarolewski

Piotr Jarolewski Software Engineer at
Grupa Allegro

Temat: image resize + crop

Najpierw ładujesz bibliotekę image library z dana konfiguracją, potem konfiguracje jeszcze raz inicjalizujesz.

$this->load->library('image_lib', $imconf);
$this->image_lib->initialize($imconf);
$this->image_lib->resize();


Wystarczy tylko:


$this->load->library('image_lib', $imconf);
$this->image_lib->resize();


Do resize nie potrzebujesz;:

$imconf['x_axis'] = '120';
$imconf['y_axis'] = '100';


tylko:


$config['source_image'] = '/path/to/image/mypic.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 75;
$config['height'] = 50;


I potem jak już zresajzujesz to:


$config['source_image'] = '/path/to/image/mypic.jpg';
$config['x_axis'] = '100';
$config['y_axis'] = '60';

$this->image_lib->initialize($config);

if ( ! $this->image_lib->crop())
{
echo $this->image_lib->display_errors();
}


I po kłopocie.

Tylko powiedz mi czemu robisz crop po resize?
Nie lepiej najpierw fotkę wykadrować i potem na tej podstawie zrobić miniaturkę?

Pozdro :)

konto usunięte

Temat: image resize + crop

z prostej przyczyny,
robie resize całej szerokości obrazka do 120px

docelowo obrazek musi być 120x100
więc nadwyżkę wysokości przycinam cropem.
Piotr Jarolewski

Piotr Jarolewski Software Engineer at
Grupa Allegro

Temat: image resize + crop

Acha, no to tak jak napisałem powinno być ok :)

konto usunięte

Temat: image resize + crop

Mam teraz taki kod:


$imconf['image_library'] = 'GD2';
$imconf['create_thumb'] = TRUE;
$imconf['thumb_marker'] = FALSE;
$imconf['maintain_ratio'] = TRUE;
$imconf['width'] = 120;

$catphoto = "/home/public_html/img/";

if(fopen(base_url().'/img/'.$datas[$key],'r')){
$imconf['source_image'] = $catphoto.''.$datas[$key];
$this->load->library('image_lib', $imconf);
$this->image_lib->initialize($imconf);
if (!$this->image_lib->resize()){
echo $this->image_lib->display_errors();
}

}

$imconf['x_axis'] = '120';
$imconf['y_axis'] = '100';

if(fopen(base_url().'/img/'.$s['file_name'],'r')){
$imconf['source_image'] = $catphoto.''.$s['file_name'];
$this->image_lib->initialize($imconf);
if (!$this->image_lib->crop()){
echo $this->image_lib->display_errors();
}
}


I za chiny nie robi kropa, tylko resize działa, a fotek nie przycina.
errorów też żadnych nie wypluwa więc nie wiem co jest grane.
Piotr Jarolewski

Piotr Jarolewski Software Engineer at
Grupa Allegro

Temat: image resize + crop

A usuń fopen z warunkiem
lepiej użyć file_exist(),

Oraz pliki sprawdzaj bez base_url(), tylko jak masz katalog img to : ./img/$file_name

$catphoto = './img/';

bez public_html itp. W CI zawsze mi to poprawnie działa na każdym serwerze.

Oraz przez ponowną inicjalizacją do cropa usuń zawartość tablicy $imconf, tak aby były tylko te dane które crop potrzebuje, bo teraz trzyma jeszcze stare dane.

Zobacz jeszcze tutaj:

http://www.jigniter.com/using-md-image-to-resize-and-c...
http://codeigniter.com/forums/viewthread/121152/Piotr Jarolewski edytował(a) ten post dnia 04.07.11 o godzinie 12:19

konto usunięte

Temat: image resize + crop

Dzięki,
kombinowałem już na wszystkie sposoby, wpisywałem pełną ścieżkę serwera i krótką.
Wszystko poprawnie działa do momentu resize.

Jak przed cropem wyczyściłem tablice

$this->image_lib->clear();


to robi tylko czarny obrazek cały. Ale nic nie przycina.
Nie wiem czy ta bilbioteka jakaś skopana albo moje GD2 nie radzi sobie z tym.
Po resize uprawnienia na fotki ma apache wszędzie RW jest więc powinno być ok.
Podłaczę to md_image i zobacze jaki efekt.
Piotr Jarolewski

Piotr Jarolewski Software Engineer at
Grupa Allegro

Temat: image resize + crop

Ja korzystam z MD_image, i działa dobrze. Powinno być ok.

konto usunięte

Temat: image resize + crop

No i gitara.
md_image ruszyło od razu :)

Dzięki za linki.

Następna dyskusja:

Image resize, czy coś.




Wyślij zaproszenie do