旋转后如何获取图像的宽度和高度?

Posted

技术标签:

【中文标题】旋转后如何获取图像的宽度和高度?【英文标题】:How to obtain width and height of image after rotating it? 【发布时间】:2013-09-04 11:15:05 【问题描述】:

php 中使用imagerotate() 旋转图像后如何获取图像的宽度和高度?

这是我的代码:

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>

但是在输出之前我想做的是,我想得到旋转图像的宽度和高度。我该怎么做?

【问题讨论】:

【参考方案1】:

我相信你可以做类似的事情:

$data = getimagesize($filename);
$width = $data[0];
$height = $data[1];

另一个选项是这样的:

list($width, $height) = getimagesize($filename);

【讨论】:

不,这样不行。在这里发帖之前我已经尝试过了:) 那么如果它不起作用,它会做什么呢?它是否出错,是否使服务器崩溃,是否返回不正确的值?如果旋转 180 度,图像的宽度和高度不应改变 你不能在旋转它之前使用它来获取图像的高度和宽度吗? 它说“警告:getimagesize() 期望参数 1 是字符串”它在 php doc 中明确提到它必须传递图像的路径,而不是图像对象 @aslamdoctor - 你知道$filename 的值当你做$source = imagecreatefromjpeg($filename); 时使用...如果你在$data = getimagesize($filename); 中使用相同的$filename 值会得到什么,根据 BeatAlex 的建议?【参考方案2】:

imagerotate 返回一个图像资源。因此,您不能使用与图像文件一起使用的 getimagesize。 使用

$width = imagesx($rotate);
$height = imagesy($rotate);

改为。

【讨论】:

这是问题的正确答案。 getimagesize() 用于旋转前原始文件的尺寸。 imagesx()imagesy() 用于尺寸或旋转后处理的文件。

以上是关于旋转后如何获取图像的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 获取图像大小(高度和宽度)?

使用css和jquery调整图像大小后获取图像高度?

如何获取屏幕的宽度

如何以编程方式在 Android 中获取图像按钮的宽度和高度

在将图像附加到 DOM/浏览器之前,如何获取图像的宽度/高度?

如何从 DockPanel 获取高度和宽度?