Помощник
|
Как обрезать картинку? Нужно уменьшить |
sc2r2bey
|
Сообщение
#1
|
||
|
|
||
|
|||
ilyazh |
12.2.2010, 14:43;
Ответить: ilyazh
Сообщение
#2
|
|
можно в том же фотошопе. Не самый лучший вариант, если вам надо только обрезат фото, но если он у вас уже установлен, то, имхо, там проще всего. Ну по крайней мере мне.
|
|
|
sc2r2bey
|
Сообщение
#3
|
|
вопрос в теме php поэтому подразумевается, что средставми php, используя gd библиотеку при загрузки на сервер
-------------------- программирую web и для we |
|
|
ZiTosS |
13.2.2010, 0:34;
Ответить: ZiTosS
Сообщение
#4
|
|
sc2r2bey, напишу алгоритм:
1) В функцию поступают - путь до картинки, размер квадратной картинки 2) Определяем, какая из сторон меньше ширина или высота: 2.1) Если ширина, определяем высоту уменьшенной картинки (высчитываем) масштабируем изображение, относительно ширины ( в PHP функция imagecopyresized() ) 2.2) Если высота, определяем ширину уменьшенной картинки (высчитываем), масштабируем изображение, относительно высоты ( в PHP функция imagecopyresized() ) 3) Создаём новый ресурс изображения и копируем часть отмасштабированной картинки, надо вырезать квадрат размером "размер квадратной картинки" ( в PHP функция imagecopy() ) 4) Выводим изображение или сохраняем в файл |
|
|
euorik |
18.2.2010, 0:42;
Ответить: euorik
Сообщение
#5
|
|
Здравствуйте! А в php коде можно. Меня интересует пример. Возможно ли это?
|
|
|
ilyazh |
18.2.2010, 8:43;
Ответить: ilyazh
Сообщение
#6
|
|
в php коде это возможно, но к сожалению у меня сейчас нет такого кода под рукой. Вечером, если вам не помогут, то поищу код и выложу тут.
|
|
|
ZiTosS |
18.2.2010, 20:58;
Ответить: ZiTosS
Сообщение
#7
|
|
|
euorik, тогда держите сырую реализацию, времени нет дорабатывать.
файл с функциями для получения квадратной картинки functions.php [php]<?php function printSquareImage($pathImg, $sizeSquare = 80) { if( file_exists($pathImg) && ($sizeImg = @getimagesize($pathImg) ) !== NULL ) { $mimeType = getMimeType($pathImg); $srcW = $sizeImg[0]; $srcH = $sizeImg[1]; if( $mimeType == "image/jpeg" ){ $image = imagecreatefromJPEG($pathImg); }elseif( $mimeType == "image/gif" ){ $image = imagecreatefromGIF($pathImg); }elseif( $mimeType == "image/png" ){ $image = imagecreatefromPNG($pathImg); }else{ die("Couldn't create image."); } if( $srcW > $sizeSquare && $srcH > $sizeSquare ) { $reduction = calculateReduction($srcW,$srcH, $sizeSquare); $desW = round($srcW/$reduction); $desH = round($srcH/$reduction); if( $mimeType == "image/gif" ){ $copy = imagecreate($desW, $desH); }else{ $copy = imagecreatetruecolor($desW, $desH); } imagecopyresampled($copy,$image,0,0,0,0,$desW, $desH, $srcW, $srcH) or die ("Image copy failed."); $image = $copy; $srcW = $desW; $srcH = $desH; } if( $mimeType == "image/gif" ){ $square = imagecreate($sizeSquare, $sizeSquare); }else{ $square = imagecreatetruecolor($sizeSquare, $sizeSquare); } imagecopy($square,$image,0,0,0,0,$srcW,$srcH); imagedestroy($image); header("Content-type: {$mimeType}"); if( $mimeType == "image/jpeg" ){ imagejpeg($square,"", 100); }elseif( $mimeType == "image/gif" ){ imagegif($square); }elseif( $mimeType == "image/png" ){ imagepng($square); }else{ die("Couldn't create image."); } } } function calculateReduction($srcW, $srcH, $resize) { if( $srcW > $srcH ) $reduction = $srcH/$resize; else $reduction = $srcW/$resize; return $reduction; } function getMimeType($path) { $extension = substr($path,(strpos($path, ".")+1)); $extension = strtolower($extension); if( $extension == "jpeg" || $extension == "jpg" ) { $mimetype = "image/jpeg"; } elseif( $extension == "png" ) { $mimetype = "image/png"; } elseif( $extension == "gif" ) { $mimetype = "image/gif"; }else{ die ("Not a recognized type."); } return $mimetype; } ?>[/php] А теперь как всё это добро использовать: файл вывода картинки image.php [php]<?php include "functions.php"; printSquareImage("image.jpg"); // получить квадратную картинку размером по умолчанию 80x80 // printSquareImage("image.jpg", 300); получить квадратную картинку размером 300x300 ?>[/php] Файл в который будем вставлять с помощью HTML нашу картинку: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Квадратная картинка image.php</title> </head> <body> <img src="image.php" /> </body> </html>
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие ставки для кликов в Я.Директ. Как удешевить? | 2 | rownong27 | 1124 | 26.3.2024, 14:13 автор: knezevolk |
|
Как вы бросили работу и перешли на заработок с сайтов? | 12 | uahomka | 2298 | 25.3.2024, 6:52 автор: Skyworker |
|
Как отозвать банковский платеж фрилансеру? | 28 | metvekot | 3921 | 25.3.2024, 6:34 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 23 | freeax | 3648 | 24.3.2024, 20:55 автор: Liudmila |
|
Через какой браузер и как можно найти в кэшэ браузера видео | 10 | Room | 1943 | 23.3.2024, 7:41 автор: Room |
Текстовая версия | Сейчас: 29.3.2024, 15:01 |