X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как обрезать картинку? Нужно уменьшить
sc2r2bey
sc2r2bey
Topic Starter сообщение 12.2.2010, 11:58; Ответить: sc2r2bey
Сообщение #1


как сделать например, нужно уменьшить картинку
например, чтоб сторона была не меньше заданной величины
а потом обрезать ее(сделать квадратной) до размера узкой стороны?


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 12.2.2010, 14:43; Ответить: ilyazh
Сообщение #2


можно в том же фотошопе. Не самый лучший вариант, если вам надо только обрезат фото, но если он у вас уже установлен, то, имхо, там проще всего. Ну по крайней мере мне.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 12.2.2010, 15:00; Ответить: sc2r2bey
Сообщение #3


вопрос в теме php поэтому подразумевается, что средставми php, используя gd библиотеку при загрузки на сервер ;)


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.2.2010, 0:34; Ответить: ZiTosS
Сообщение #4


sc2r2bey, напишу алгоритм:
1) В функцию поступают - путь до картинки, размер квадратной картинки
2) Определяем, какая из сторон меньше ширина или высота:
2.1) Если ширина, определяем высоту уменьшенной картинки (высчитываем) масштабируем изображение, относительно ширины ( в PHP функция imagecopyresized() )
2.2) Если высота, определяем ширину уменьшенной картинки (высчитываем), масштабируем изображение, относительно высоты ( в PHP функция imagecopyresized() )
3) Создаём новый ресурс изображения и копируем часть отмасштабированной картинки, надо вырезать квадрат размером "размер квадратной картинки" ( в PHP функция imagecopy() )
4) Выводим изображение или сохраняем в файл


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
euorik
euorik
сообщение 18.2.2010, 0:42; Ответить: euorik
Сообщение #5


Здравствуйте! А в php коде можно. Меня интересует пример. Возможно ли это?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 18.2.2010, 8:43; Ответить: ilyazh
Сообщение #6


в php коде это возможно, но к сожалению у меня сейчас нет такого кода под рукой. Вечером, если вам не помогут, то поищу код и выложу тут.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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>


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
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


 



RSS Текстовая версия Сейчас: 29.3.2024, 15:01
Дизайн