【问题标题】:Iphone imagecopy rotates my imageIphone imagecopy 旋转我的图像
【发布时间】:2013-06-20 15:10:50
【问题描述】:

我正在构建一个与 ipad 相机配合使用的 HTML 应用程序,并将拍摄的图像上传到我的服务器。 上传图片时,使用 imagecopy() 在其上添加水印。

当我在我的电脑上测试它时一切正常,但由于某种原因,如果我在 ipad/ipod/iphone 上纵向拍照,带有水印的图像会旋转到横向模式。

澄清一下:原图上传正确,带水印的图片是旋转的。当我在带有肖像图像的计算机上尝试时,不会发生这种情况。

这里有一些代码,如果有帮助的话(我使用 Codeigniter 框架)。如果您需要更多代码,尽管问,但我不认为上传本身有什么问题。

//The code for the imagecopy do add the watermark
$overlay = imagecreatefrompng(base_url() . 'assets/images/imgoverlay.png');
$img = imagecreatefromjpeg(base_url() . 'uploads/' . $config['file_name']);
$imageSize = getimagesize(base_url() . 'uploads/' . $config['file_name']);
$sx = imagesx($overlay);
$sy = imagesy($overlay);
$newWatermarkWidth = $imageSize[0];
$newWatermarkHeight = $sy * $newWatermarkWidth / $sx;

$test = imagecopy(
          $img, 
          $overlay, 
          $imageSize[0]/2 - $newWatermarkWidth/2,
          $imageSize[1] - $newWatermarkHeight,
          0,
          0,
          imagesx($img),imagesy($img)
        );

非常感谢!

【问题讨论】:

  • 这将有助于链接到未修改的 iPad 图像。可能还有你的水印版本。

标签: php image codeigniter upload


【解决方案1】:

您确定图像没有旋转吗?大多数观看者会自动为您旋转图像,因此您永远不会在计算机上看到它。

试试这个:

$exif = exif_read_data('test.jpg');
if(isset($exif['Orientation'])) {
    if($exif['Orientation'] === 1) print 'rotated clockwise by 0 deg (nothing)';
    if($exif['Orientation'] === 8) print 'rotated clockwise by 90 deg';
    if($exif['Orientation'] === 3) print 'rotated clockwise by 180 deg';
    if($exif['Orientation'] === 6) print 'rotated clockwise by 270 deg';

    if($exif['Orientation'] === 2) print 'vertical flip, rotated clockwise by 0 deg';
    if($exif['Orientation'] === 7) print 'vertical flip, rotated clockwise by 90 deg';
    if($exif['Orientation'] === 4) print 'vertical flip, rotated clockwise by 180 deg';
    if($exif['Orientation'] === 5) print 'vertical flip, rotated clockwise by 270 deg';
}

【讨论】:

  • 我很确定,因为原始图像和生成的图像都存储在我的服务器上。如果我打开它们,原始图像显示纵向,而生成的图像旋转为横向
  • 忘了说,我在 Photoshop 中打开我的图像。我不认为他们会自动旋转它
  • 其实Photoshop支持方向标志和旋转图像。
  • 在 OS X 上,Safari、Chrome 和 Preview 也会自动旋转图像,而 Firefox 则不会。
【解决方案2】:

我猜这与这个问题有关:Generated images showing flipped

iPad 相机可能只是以相同的方式存储图像,无论设备方向如何,而是写入一个 Exif 标签以确保它在显示时正确旋转。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多