为了账号安全,请及时绑定邮箱和手机立即绑定

使用 TCPDF PHP 库横向显示的图像

使用 TCPDF PHP 库横向显示的图像

PHP
绝地无双 2023-05-12 14:16:19
我正在使用 TCPDF PHP 库生成包含照片的 PDF 文档。出于某种原因,一些照片在我的计算机和网络上显示正确,但当我将该图像放在 PDF 上时,它似乎是横向的。这只发生在某些图像上。大多数图像显示正确。这是在 PDF 上横向显示但通常在网络和我的计算机上显示的示例图像:这是图像在网络上的样子:这是图像在 PDF 中的样子:这是相关代码:// create new PDF document$photoPDF = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$photoPDF->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);$photoPDF->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));$photoPDF->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));$photoPDF->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);$photoPDF->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);$photoPDF->SetHeaderMargin(PDF_MARGIN_HEADER);$photoPDF->SetFooterMargin(PDF_MARGIN_FOOTER);$photoPDF->SetAutoPageBreak(FALSE, PDF_MARGIN_BOTTOM);$photoPDF->setImageScale(PDF_IMAGE_SCALE_RATIO);$photoPDF->setJPEGQuality(100);$photoPDF->SetFont('helvetica', '', 10, '', true);$xoffset = 58;$width = 100;$height = 100;$filetype = "JPEG";$imageid = "552556832.jpeg";$url = "https://example.com/".$imageid;$photoPDF->Image('D:\ReportPhotos\\'.$imageid, $xoffset, 35, $width, $height, $filetype, $url, '', true, 150, '', false, false, 1, false, false, false);$photoPDF->writeHTMLCell($w=$width, $h=0, $x=$xoffset, $y=35+$height, $desc, $border=0, $ln=1, $fill=0, $reseth=true, $align='C', $autopadding=true);如果我在 MS Paint 中打开图像并保存它(不做任何更改),图像将正确显示。我想让图像不在 PDF 上横向显示(或者如果不可能)然后我想在网络上横向显示该图像,以便用户知道他们需要旋转图像而不必先生成 PDF 来查看图像是侧面的。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

我使用以下代码解决了这个问题。它将从 EXIF 数据中检测方向,并根据方向值旋转它。这是在上传图像时完成的。

move_uploaded_file($uploadedFile, $destinationFilename);

correctImageOrientation($destinationFilename);



function correctImageOrientation($filename) {

  if (function_exists('exif_read_data')) {

    $exif = exif_read_data($filename);

    if($exif && isset($exif['Orientation'])) {

      $orientation = $exif['Orientation'];

      if($orientation != 1){

        $img = imagecreatefromjpeg($filename);

        $deg = 0;

        switch ($orientation) {

          case 3:

            $deg = 180;

            break;

          case 6:

            $deg = 270;

            break;

          case 8:

            $deg = 90;

            break;

        }

        if ($deg) {

          $img = imagerotate($img, $deg, 0);        

        }

        // then rewrite the rotated image back to the disk as $filename 

        imagejpeg($img, $filename, 95);

      } // if there is some rotation necessary

    } // if have the exif orientation info

  } // if function exists      

}


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信