473,463 Members | 1,538 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Thumbnail orientation

Hi,

I'm using the code below to create thumbnails from photos. The code
works fine and thumbnails are created. However, thumbnails of vertical
photos are oriented as horizontal photos.

More info:
These photos come from a Nikon high end SLR digital camera. It's not my
camera so I have no control over how the image is taken.
If I open a vertical image in Photoshop (CS2), the image is oriented
correctly. When I try to create a thumbnail with php, the thumbnail is
always oriented incorrectly as Horizontal.
I did some further testing and tried opening the same image using
ImageMagic (on a Linux box). ImageMagic also sees the image incorrectly
as Horizontal.

There has to be some way to read the JPG file and determine if it's
meant to be a vertical or horizontal photograph. Are there any php
libraries that are capable of doing this?

Does anyone know the layout of a JPG binary well enough to tell me if
there is a specific flag set for orientation?

Thanks for all of your suggestions.

M

<?

$fname="verttest.jpg";
$fname2="Thumb_verttest.jpg";
$thumbWidth="300";
echo "Creating thumbnail for $fname";
// load image and get image size
$img = imagecreatefromjpeg($fname);
$width = imagesx( $img );
$height = imagesy( $img );
echo "\n";
echo "Current Width:" . $width;
echo "\n";
echo "Current Height:" . $height;
echo "\n";

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

echo "\n";
echo "New Width:" . $new_width;
echo "\n";
echo "New Height:" . $new_height;
echo "\n";

// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );

// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width,
$new_height, $width, $height );

// save thumbnail into a file
imagejpeg( $tmp_img, "{$pathToThumbs}{$fname2}" );
?>

May 3 '07 #1
2 8144
Milagro ha scritto:
I'm using the code below to create thumbnails from photos. The code
works fine and thumbnails are created. However, thumbnails of vertical
photos are oriented as horizontal photos.
It seems you have to check the EXIF orientation. EXIF is a metadata
section for JPEG, which most cameras set when they take a photo.
You could access the EXIF data using the exif_read_data() function (see
the doc for info about input parameters) which will return you an array.
After that, you could deterine if the image has to be rotated in this
way ($exif is the array returned by exif_read_data() ):

$o = $exif["IFD0"]["Orientation"];
$rotate = 0;
$flip = false;
switch($o) {
case 1:
$rotate = 0;
$flip = false;
break;

case 2:
$rotate = 0;
$flip = true;
break;

case 3:
$rotate = 180;
$flip = false;
break;

case 4:
$rotate = 180;
$flip = true;
break;

case 5:
$rotate = 90;
$flip = true;
break;

case 6:
$rotate = 90;
$flip = false;
break;

case 7:
$rotate = 270;
$flip = true;
break;

case 8:
$rotate = 270;
$flip = false;
break;
}

Now, $rotate indicates how many degrees the image should be rotated
(clockwise). Then, if $flip is true , you should also flip horizontally
the image (normally this is not the case for digital camera photos)

--
|\/|55: Mattia Gentilini e 55 GigaHertz nel processore
|/_| ETICS project at CNAF, INFN, Bologna, Italy
|\/| www.getfirefox.com www.getthunderbird.com
* Using Mac OS X 10.4.9 powered by Cerebros (Core 2 Duo) *
May 3 '07 #2
On 2007-05-03 10:45:10 -0400, Mattia Gentilini
<Mattia.Gentilini_REMOVE_@_REMOVE_CNAF.INFN.ITsaid :
Milagro ha scritto:
>I'm using the code below to create thumbnails from photos. The code
works fine and thumbnails are created. However, thumbnails of vertical
photos are oriented as horizontal photos.
It seems you have to check the EXIF orientation. EXIF is a metadata
section for JPEG, which most cameras set when they take a photo.
You could access the EXIF data using the exif_read_data() function (see
the doc for info about input parameters) which will return you an array.
After that, you could deterine if the image has to be rotated in this
way ($exif is the array returned by exif_read_data() ):

$o = $exif["IFD0"]["Orientation"];
$rotate = 0;
$flip = false;
switch($o) {
case 1:
$rotate = 0;
$flip = false;
break;

case 2:
$rotate = 0;
$flip = true;
break;

case 3:
$rotate = 180;
$flip = false;
break;

case 4:
$rotate = 180;
$flip = true;
break;

case 5:
$rotate = 90;
$flip = true;
break;

case 6:
$rotate = 90;
$flip = false;
break;

case 7:
$rotate = 270;
$flip = true;
break;

case 8:
$rotate = 270;
$flip = false;
break;
}

Now, $rotate indicates how many degrees the image should be rotated
(clockwise). Then, if $flip is true , you should also flip horizontally
the image (normally this is not the case for digital camera photos)

Thank you very much, this is exactly what I was looking for.
Ciao!

May 3 '07 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Bruce Adams | last post by:
I am using VB6 SP6. I have an application that prints charts. Specifically, it prints line charts of plant process information nightly. The code is a mix of API calls and Printer methods. I am...
0
by: Mike | last post by:
Sites using thumbnail preview for world wide web file navigation and searching. Below are list of sites that are either researching or providing thumbnail preview images for online web...
4
by: tvmaly | last post by:
Does anyone know if it is possible to determine if an image is horizontal/vertical and color or black & white using the python image library? I have been searching this news group and the...
1
by: Cédric | last post by:
Hello, Wanting to create a thumbnail of an image, i'm using the following piece of code : Public Sub Reduction(ByVal Source As String, ByVal Destination As String, ByVal TailleX As String,...
1
by: Xah Lee | last post by:
The following is a program to generate thumbnail images for a website. Useful, if you want to do that. It is used to generate the thumbnails for my “Banners, Damsels, and Mores” project...
8
by: barb | last post by:
So that the world at large benefits from our efforts, here is one fully documented way to use Windows Irfanview freeware to create thumbnail web galleries (http://www.irfanview.com). STEP 1:...
7
by: oscartheduck | last post by:
Hi folks, I'm trying to alter a program I posted about a few days ago. It creates thumbnail images from master images. Nice and simple. To make sure I can match all variations in spelling of...
8
by: Arno R | last post by:
Hi all. When I need to search for pictures, I always have too choose thumbnail-view manually. Is it possible to open the common dialog in thumbnail-view programmatically? Example ?? At the...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development projectplanning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.