簡體   English   中英

PHP縮放圖像裁剪

[英]php scaled image cropping

我的文件系統上有一個映像。 我將其顯示在帶有裁剪工具的頁面上,但是我將其縮小以適合裁剪工具區域(如果圖像小於該區域,則將其拉伸以占據整個區域)。 用戶可以在此頁面上選擇要保留的照片區域(使用jcrop)並提交。

在后端,我將等待上一頁的坐標。 我將得到x1,x2,y1,y2,w和h。

問題在於,調整大小后的圖像(顯示給用戶的坐標)上的坐標不易在完整尺寸的圖像上使用,因為它們將占比該圖像小的區域(將其縮小以適合屏幕尺寸)否則它將大於圖像(將其拉伸以適合屏幕)。

我可以得到原始照片的高度和寬度,以及它被強制放入的靜態寬度和高度。

給定已知尺寸,您將如何找到圖像的正確區域?

我當前的代碼在這里

$target_width = 150;
$target_height = 150;
$jpeg_quality= 90;
$tmp =explode('/',$_POST['filename']); 

$src = '../uploads/'.$tmp[count($tmp)-1];

$x1 = $_POST['x1'];
$x2 = $_POST['x2'];
$y1 = $_POST['y1'];
$y2 = $_POST['y2'];
$w = $_POST['w'];
$h = $_POST['h'];

$image = imagecreatefromjpeg($src);
$final = imagecreatetruecolor($target_width, $target_height);

imagecopyresampled($final, $image, 0, 0, $x1, $y1, $target_width, $target_height, $w, $h);
imagejpeg($final, $src, $jpeg_quality);

也許我的問題不是很清楚(我也很難向某人講IRL),但是我的回答應該可以很好地解決它。

我的文件系統上有一個圖像(路徑可通過$ _POST ['image_path']獲得)和一個看起來像“”的圖像標簽。 我從圖像標簽中獲取了一些jQuery魔術的數據。

答案是“比例”。
h_limit是img標簽的高度約束w_limit是img標簽的寬度約束

$h_limit = $_POST['h_limit'];
$w_limit = $_POST['w_limit'];

list($width, $height) = getimagesize($_POST['image_path']);
$w_mult = $width/$w_limit;
$h_mult = $height/$h_limit;

然后我可以做

imagecopyresampled($final, $image, 0, 0, $x1*$w_mult, $y1*$h_mult, $target_width, $target_height, $w*$w_mult, $h*$h_mult);

我不確定為什么顯示大小會有所不同,但您不能只是跟蹤瀏覽器中的顯示大小(我不知道這在您的代碼中是否已固定,因此可能存在一些javascript和額外的表單字段必要),然后在PHP中先將其調整為該尺寸,然后裁剪

原始圖像--->調整為用戶在瀏覽器中看到的大小--->根據用戶提供的坐標進行裁剪

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM