Просмотр изображений с помощью php & gd;

Я видел множество примеров обрезки изображений с помощью php и gd lib, однако я никогда не видел сообщений о скимминге или бритье изображения. Под этим я подразумеваю, что, скажем, у вас есть снимки с цифровой камеры, на которой на снимке ставится дата. Он всегда находится на постоянном месте на картинке. Итак, как мне это сделать? Все примеры, с которыми я сталкивался, связаны с сохранением соотношения сторон, которое я просто хочу, чтобы эти 75 пикселей или около того были внизу. как это можно сделать проще всего? Я нашел этот пример несколько поучительным! imagecopyresampled в PHP, может кто-нибудь объяснить?


person dominicdinada    schedule 14.09.2010    source источник


Ответы (1)


Чтобы создать то, что вам нужно, просто прочитайте эту страницу: http://us.php.net/imagecopy

Вы можете использовать что-то подобное и просто изменить $left и $top так, чтобы они соответствовали дате на изображении.

<?php
// Original image
$filename = 'someimage.jpg';

// Get dimensions of the original image
list($current_width, $current_height) = getimagesize($filename);

// The x and y coordinates on the original image where we
// will begin cropping the image
$left = 50;
$top = 50;

// This will be the final size of the image (e.g. how many pixels
// left and down we will be going)
$crop_width = 200;
$crop_height = 200;

// Resample the image
$canvas = imagecreatetruecolor($crop_width, $crop_height);
$current_image = imagecreatefromjpeg($filename);
imagecopy($canvas, $current_image, 0, 0, $left, $top, $current_width, $current_height);
imagejpeg($canvas, $filename, 100);
?>

Аналогичный пример:

Основной способ реализации функции «обрезки»: задано изображение (src), смещение (x, y) и размер (w, h).

урожай.php:

<?php
$w=$_GET['w'];
$h=isset($_GET['h'])?$_GET['h']:$w;    // h est facultatif, =w par défaut
$x=isset($_GET['x'])?$_GET['x']:0;    // x est facultatif, 0 par défaut
$y=isset($_GET['y'])?$_GET['y']:0;    // y est facultatif, 0 par défaut
$filename=$_GET['src'];
header('Content-type: image/jpg');
header('Content-Disposition: attachment; filename='.$src);
$image = imagecreatefromjpeg($filename); 
$crop = imagecreatetruecolor($w,$h);
imagecopy ( $crop, $image, 0, 0, $x, $y, $w, $h );
imagejpeg($crop);
?>

Назовите это так:

<img src="crop.php?x=10&y=20&w=30&h=40&src=photo.jpg">
person Todd Moses    schedule 14.09.2010
comment
Хорошо, метки даты и времени всегда в правом нижнем углу, поэтому в вашем примере я должен сделать это. $skim = 75; $ слева = 0; $верх = 0; (чтобы начать с верхней левой/верхней позиции 0), затем $crop_width = imagesx($file); $crop_height = (imagesy($file) - $skim); Как я уже говорил ранее, я не пытаюсь сделать миниатюру с соотношением сторон 200x200 и не пытаюсь сохранить какие-либо аспекты, поскольку на самом деле даже не видно 75 пикселей от всего изображения. - person dominicdinada; 15.09.2010
comment
Imagecopy не работает, все, что он делает, это заполняет одно и то же изображение черным пространством над областью, которая должна быть обрезана. но это заставило меня присмотреться к ссылке, которую я предоставил. - person dominicdinada; 15.09.2010