我正在构建一个与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)
);
非常感谢!
答案 0 :(得分: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';
}
答案 1 :(得分:0)
我猜这与此问题有关:Generated images showing flipped
iPad相机可能只是以相同的方式存储图像,无论设备方向如何,而是编写Exif标签以确保它在显示时正确旋转。