Image a automatické otáčení obrázku
- Stormwinter
- Člen | 11
Ahoj, mám takový problém, když uploaduju image a má výšku větší neš šířku, tak mi to obrázek automaticky otočí naležato.
v presenteru mám toto:
public function saveNewPhotos($id, $file, $dir){
if ($file->isImage() and $file->isOk()) {
// oddělení přípony pro účel změnit název souboru na co chceš se zachováním přípony
$file_ext = strtolower(mb_substr($file->getSanitizedName(), strrpos($file->getSanitizedName(), ".")));
// vygenerování náhodného řetězce znaků, můžeš použít i \Nette\Strings::random()
$file_name = Random::generate() . $file_ext;
// přesunutí souboru z temp složky
$file->move($dir . $file_name);
//vytvoření miniatury
$image = Image::fromFile($dir . $file_name);
if ($image->getHeight() > 120) {
$image->resize(NULL, 120);
}
$image->sharpen();
$image->save($dir.'thumbs/' . $file_name);
$query = array('file' => $file_name, 'news_id' => $id);
// zápis jmen obrázků do DB a přiřazení k ID novinky
$this->manager->saveNewImage($query);
return TRUE;
}
}
Můžete mi prosím poradit, co dělám kde špatně? Díky
- froggy
- Člen | 17
Ahoj, nejspíš bude orientace obrázku uložena v EXIF informacích.
function rotate_image($file, $image) {
$ex = @exif_read_data($file, 'EXIF');
if(!empty($ex['Orientation'])) {
switch($ex['Orientation']) {
case 8:
$image->rotate(90, 0);
break;
case 3:
$image->rotate(180, 0);
break;
case 6:
$image->rotate(-90, 0);
break;
}
}
}
Tedy za řádkem $image = Image::fromFile($dir . $file_name);
by
mělo být provedené
natočení – rotate_image($dir . $file_name, $image);