Php Iphone imagecopy旋转我的图像

Php Iphone imagecopy旋转我的图像,php,image,codeigniter,upload,Php,Image,Codeigniter,Upload,我正在构建一个HTML应用程序,它可以与ipad摄像头配合使用,并将拍摄的图像上传到我的服务器。 上载图像时,使用imagecopy()在其上获取水印 当我在电脑上进行测试时,一切都正常,但由于某种原因,如果我在ipad/ipod/iphone上以纵向方式拍照,带有水印的图像会旋转到横向模式 澄清:正确上传原始图片,旋转带有水印的图像。当我在我的计算机上用肖像图像尝试时,不会发生这种情况 下面是一些代码,如果有帮助的话(我使用Codeigniter框架)。如果你需要更多的代码,尽管我不认为上传本

我正在构建一个HTML应用程序,它可以与ipad摄像头配合使用,并将拍摄的图像上传到我的服务器。 上载图像时,使用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摄像头可能只是以相同的方式存储图像,而不考虑设备方向,而是写入Exif标签,以确保图像在显示时正确旋转。

您确定图像没有旋转吗?大多数查看器会自动为您旋转图像,因此您永远不会在计算机上看到这一点

试试这个:

$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';
}

另一种方法是在应用水印之前先“取消旋转”图像。我确实要尝试这个解决方案,我会让你知道workedIt是否有助于链接到未修改的iPad图像。也可能是你的水印版本。我很确定,因为原始图像和生成的图像都存储在我的服务器上。如果我打开它们,原始图像显示的是人像,而生成的图像旋转到了风景区忘记说,我在Photoshop中打开了我的图像。我认为他们不会自动旋转。实际上,Photoshop支持方向标志并旋转图像。在OSX上,Safari、Chrome和Preview也会自动旋转图像,Firefox不会。