# calculate image height or width

#### Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

•  Subject
• Author
• Posted on
Sorry folks, I'm on a roll!!!

I need to calculate the height or width of an image if you change
either the width or height and don't change BOTH of them at the same
time, this is to "vector" the image.

Here is the class method, it obviously doesn't work:

[PHP]
/**
* Perform calculation solely upon re-entered width and height if a
calculation percentage was not entered nor chosen.  Can be called
statically
*
* @access protected
* @param int \$width (reference)
* @param int \$height (reference)
* @param int \$origWidth
* @param int \$origHeight
* @return array \$dimArray Array consisting of recalculated width and
height
*/
function &calculate_width_and_height(&\$width, &\$height, \$origWidth,
\$origHeight) {
print_r("width = \$width and origWidth = \$origWidth and height =
\$height and origHeight = \$origHeight<P>");
if ((int)\$origWidth === 0 || (int)\$origHeight === 0) return array();
// TO AVOID DIVISION BY ZERO
if ((int)\$origWidth !== (int)\$width && (int)\$origHeight !==
(int)\$height) return array(\$width, \$height);    // NO NEED TO CALCULATE
SINCE CHANGING ALL DIMENSIONS
if ((int)\$origWidth !== (int)\$width) \$height = \$height / (\$width /
\$origWidth);
if ((int)\$origHeight !== (int)\$height) \$width = \$width / (\$height /
\$origHeight);
print_r("width = \$width and origWidth = \$origWidth and height =
\$height and origHeight = \$origHeight<P>");
return array(\$width, \$height);
}
[/PHP]

Ok, folks, what on earth do I do? The calculations are horrifically
wrong.  How do I fix this? The values of \$width and \$height are entered
via FORM posts.

Phil

## Re: calculate image height or width

Never mind, I got it on my own:

/**
* Perform calculation solely upon re-entered width and height if a
calculation percentage was not entered nor chosen.  Can be called
statically
*
* @access protected
* @param int \$width (reference)
* @param int \$height (reference)
* @param int \$origWidth
* @param int \$origHeight
* @return array \$dimArray Array consisting of recalculated width and
height
*/
function &calculate_width_and_height(&\$width, &\$height, \$origWidth,
\$origHeight) {
if ((int)\$origWidth === 0 || (int)\$origHeight === 0) return
array(\$width, \$height);                     // TO AVOID DIVISION BY ZERO
if ((int)\$origWidth !== (int)\$width && (int)\$origHeight !==
(int)\$height) return array(\$width, \$height);    // NO NEED TO CALCULATE
SINCE CHANGING ALL DIMENSIONS
if ((int)\$origWidth !== (int)\$width) \$height = \$width * (\$origHeight
/ \$origWidth);
if ((int)\$origHeight !== (int)\$height) \$width = \$height * (\$origWidth
/ \$origHeight);
return array(floor(\$width), floor(\$height));
}

Phil