Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wycinek obrazka ...
Forum PHP.pl > Forum > PHP
deejay
Witam

Jak wyświetlić wybrany wycinek obrazka o wielkości x pixeli / y pixeli po zuploadowaniu pliku.

W razie gdyby ktoś nie zabardzo zrozumiał o co mi chodzi to tłumacze, że potrzebuje to do tego by wyświetlić przy newsie w skrypcie coś ala zajawke smile.gif, i potrzebuje właśnie coś co pozwoli mi określić co z obrazka ma zostać wyświetlone smile.gif...

Jeśli by komuś to pomogło w rozwiązaniu problemu dla php to posiadam kod czegoś takiego w ASP od znajomego, ale on w php nie pracuje a ja w asp to już zupełnie ...

Pozdrawiam
Paul
do tego potrzebujesz GD...... wyszytkie funkcje jakie potrzebujesz znajdziesz tu
marian8
W tym kodzie musisz podac $nazwa_src (nazwa zrodlowego obrazka), $nazwa_dst (nazwa pod ktora bedzie zapisany nowy obrazek), $rozmiar_x, $rozmiar_y i w funkcji [manual:37566cf146]imagecopyresampled[/manual:37566cf146] zamienic 100,200,300 na odpowiednie wartosci. Skladnia tej funkcji:
bool imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

[php:1:37566cf146]<?php
$dst = imagecreatetruecolor($rozmiar_x,$rozmiar_y);
$src = imagecreatefromjpeg($nazwa_src);
imagecopyresampled($dst, $src, 0,0, 100,200, $rozmiar_x,$rozmiar_y, 200,300);
imagedestroy($src);
imagejpeg($dst,$nazwa_dst);
imagedestroy($dst);
?>[/php:1:37566cf146]


Jesli chcesz wyslac obrazek do przegladarki a nie do pliku to z funkcji
[manual:37566cf146]imagejpeg[/manual:37566cf146] musisz usunac parametr $nazwa_dst i caly skrypt podawac jako obrazek czyli
[xml:1:37566cf146]<img src="skrypt.php" >[/xml:1:37566cf146]
deejay
marian8 wielkie dzięki za pomoc, wszystko działa poprawnie, musze tylko dokładnie przestudiować argumenty funkcji imagecopyresampled ;].

Wielkie dzięki za pomoc.
Pozdr
Paul
marian8: ja mu "dalem wedke"..... sam by do tego doszedl (miejmy nadzieje) smile.gif
deejay
Paul, z tym dochodzeniem samemu to bywa różnie. Tobie również należą się podziękowania smile.gif...
Lucky
Wydaje mi się że takie wędki to pomoc od niechcenia. Jeżeli ktoś potrzebuje pomocy to trzeba mu powiedzieć jasno i dodatkowo ewentualnie odesłać do literatury. smile.gif
deejay
Mam do tego jeszcze takie pytanie. Czy da sie to tak zrobic ze obrazek jak zrobie zeby sie poakzywal obok to zeby okresilo sie kliknieciem i przeciagnieciem myszki wszystkie potrzebne wspolrzedne i wielkosci ?
Bielo
ja bym to zrobił na javascripcie

[xml:1:671789f31a]
<form action="dalej.php" name="wspolzendne">
x1<input type="text" name="x1">
y1<input type="text" name="y1">
x2<input type="text" name="x2">
y2<input type="text" name="y2">
</form>
<img src="templates/design1/images/logo.gif" width="220" height="83" border="0" id="img"><!--wyświetlasz cały obrazek-->
<div id="ramka" style="border: dotted black 1px; background-color: transparent; filter: alpha('opacity=50'); position: Absolute">
<script>
document.onmousedown=poczatek
document.onmousemove=rusz
document.onmouseup=koniec
p=false;
function poczatek()
{
xa=window.event.offsetX;
ya=window.event.offsetY;
if(window.event.srcElement.id=="img")
{
p=true;
document.getElementById("ramka").style.height=0;
document.getElementById("ramka").style.width=0;
document.getElementById("ramka").style.left=window.event.x-1;
document.getElementById("ramka").style.top=window.event.y-1;
document.wspolzendne.x1.value=xa;
document.wspolzendne.y1.value=ya;
}
else
{
p=false;
document.getElementById("ramka").style.left=0;
document.getElementById("ramka").style.top=0;
document.getElementById("ramka").style.width=0;
document.getElementById("ramka").style.height=0;
document.wspolzendne.x1.value=0;
document.wspolzendne.y1.value=0;
}
return false;
}

function rusz()
{
xb=window.event.offsetX;
yb=window.event.offsetY;
if(p&&window.event.srcElement.id=="img")
{
w=(xb-xa)<0?0:xb-xa;
h=(yb-ya)<0?0:yb-ya;
document.getElementById("ramka").style.width=w;
document.getElementById("ramka").style.height=h;
document.wspolzendne.x2.value=xa+w;
document.wspolzendne.y2.value=ya+h;
}
return false;
}

function koniec()
{
p=false;
}
</script>[/xml:1:671789f31a]

moge sie pochwalic ze pisane na poczekaniu zmien tylko typ inputów z text na hidden

wynik na http://krzysiek.bielicki.pl/zaznacz.php

UPDATE
Było trochę źle, ale jest lepiej.
Mam problem gdy width/height ma być ujemny. Narazie zrobiłem żeby były równe 0
deejay
UPDATE

Mam jeszcze pytanie dotyczące funckji:
imagecopyresampled($dst, $src, 0,0,0,0,$x1,$y1,$x2,$y2);
co znaczą poszczególne jej argumenty, bo musze przyznać ze manual mi zbyt w tym niepomógł i jakośtak cieżko mi smile.gif ...

Pozdry
-----------------------
punkcik dla Ciebie, o to mi właśnie chodziło zaraz bede testowal, jak będa problemy dam znać
Dzięki i pozdrawiam
Bielo
jeśli użyjesz mojego skryptu to będzie:
[php:1:8cf00ac3db]<?php
imagecopyresampled ( nazwa wycinka, zuploadowany obrazek, 0, 0, $_POST["x1"], $_POST["y1"], ($_POST["y2"]-$_POST["y1"]), ($_POST["x2"]-$_POST["x1"]),($_POST["y2"]-$_POST["y1"]), ($_POST["x2"]-$_POST["x1"]))

?>[/php:1:8cf00ac3db]

Bo obrazka chyba nie chcesz przeskalowywać
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.