php.de

Zurück   php.de > Lösungen durch Skripte > Scriptbörse

Scriptbörse PHP Lösungen für nen schmalen Taler

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.09.2009, 18:34  
Benutzer
 
Registriert seit: 24.03.2009
Beiträge: 42
LeChuck befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Bild erst skalieren und dann zuschneiden

Hallo zusammen,
ich habe ein Problem mit einer Funktion. Diese wird aufgerufen mit einem Datei-Upload-Formular.
$bild_tmp_name ist dabei das Bild aus dem Formular, bild_neuer_name, der Name unter dem ich das Bild spaeter ablegen moechte, neue_breite und neue_hoehe sind das Format, das ich am Ende gerne erhalten moechte.
Dabei soll das Bild erst unter beibehaltung der Seitenverhaeltnisse skaliert werden und anschliessend dann ein quadratischer Ausschnitt ausgewaehlt werden.

Hier die Funktion:
Code:
function bild_skalieren($bild_tmp_name,$bild_neuer_name,$neue_breite,$neue_hoehe) {
	$size=getimagesize($bild_tmp_name); 
	$breite=$size[0]; 
	$hoehe=$size[1];
	if($breite>$hoehe) {
		$hoehe_skaliert=intval($hoehe*$neue_breite/$breite);
		$breite_skaliert=$neue_breite;
		$src_x=intval(($breite_skaliert-$neue_breite)/2);
		$src_y=0;
	} else {
		$hoehe_skaliert=$neue_hoehe;			
		$breite_skaliert=intval($breite*$neue_hoehe/$hoehe);
		$src_x=0;
		$src_y=intval(($hoehe_skaliert-$neue_hoehe)/2);
	} 
	$altesBild=imagecreatefromjpeg($bild_tmp_name); 
	$neuesBild_skaliert=imagecreatetruecolor($breite_skaliert,$hoehe_skaliert);
	$neuesBild_zugeschnitten=imagecreatetruecolor($neue_breite,$neue_hoehe);
	ImageCopyResized($neuesBild_skaliert,$altesBild,0,0,0,0,$breite_skaliert,$hoehe_skaliert,$breite,$hoehe);
	imagecopyresampled($neuesBild_zugeschnitten, $neuesBild_skaliert,0,0,$src_x,$src_y,$neue_breite,$neue_hoehe,$breite_skaliert,$hoehe_skaliert);
	ImageJPEG($neuesBild_zugeschnitten,"thumbnails/".$bild_neuer_name,100); 
}
Die Bilder kommen auch in dem Format heraus, nur dass sie leider auf das Endformat skaliert sind, also verzerrt.

Danke schonmal,
LeChuck

Geändert von LeChuck (21.09.2009 um 18:44 Uhr). Grund: rechtschreibfehler
LeChuck ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.09.2009, 19:02  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Danke schonmal,
kein Dienstleisterforum.

[MOD: verschoben]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 21.09.2009, 19:09  
Benutzer
 
Registriert seit: 24.03.2009
Beiträge: 42
LeChuck befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe nicht ganz, was der Kommentar soll.
Ich habe ein Problem mit einem Skript und habe nur gefragt, ob mir jemand helfen kann. Das "Danke schonmal" schreibe ich immer hin, weil ich mich fuer die investierte Zeit bedanke moechte.
ich kann echt nicht sehen, was daran so schlimm ist.

Ich haette auch nur den entsprechenden Teil der Funktion hinschreiben koenne, nur dachte ich, dass es fuer das Verstaendnis besser ist die ganze Funktion zu sehen, als die entsprechenden 6 zeilen.
LeChuck ist offline   Mit Zitat antworten
Alt 21.09.2009, 19:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Sorry, aber einen Code zu posten, „Ich will das und das“ und „Danke schon mal“ zu schreiben, ist für mich der klassische „wer macht mir“-Ansatz. Und deshalb liegt der Thread jetzt im passenden Forum.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 21.09.2009, 19:23  
Benutzer
 
Registriert seit: 24.03.2009
Beiträge: 42
LeChuck befindet sich auf einem aufstrebenden Ast
Standard

Ganz ehrlich, ich verstehe Dein Problem mit meinem Beitrag nicht. Natuerlich schreibe ich am Anfang, was ich von der Funktion erwarte, es macht ja nicht unbedingt Sinn einfach den Code ohne Erklaerungen zu posten.
Die Funktion ist doch schon komplett da und meiner Meinung sollte das auch so funktionieren, macht es nunmal aber nicht. Ich erwarte doch nicht, dass mir jemand was programmiert, sondern hoffe nur, dass mich jemand auf meinen Fehler aufmerksam macht.
Und wenn Du Dich am "Danke schonmal" stoerst, dann bedanke ich mich in Zukunft halt nicht mehr im Vorraus. Etwas seltsam aber okay.
LeChuck ist offline   Mit Zitat antworten
Alt 21.09.2009, 19:44  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich habe den Thread verschoben. Akzeptier das bitte. Keine Ahnung, was es da jetzt zu diskutieren gibt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 21.09.2009, 20:12  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Eine reine Thumbnailfunktion die das Bild schon beim Upload verkleinert speichert findest du in dem Thread hier http://www.php.de/php-einsteiger/592...ildupload.html .

Falls du nur einen Quadratischen Ausschnitt aus dem Bild haben willst, dann geht das glaube ich mit PHP gar nicht, da musst auf Javascript zurückgreifen um einen Auschnitt des bildes zu speichern.

Ich hoffe ich habe da das richtige aus deinem Post herausgelsen.

Gruß litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 21.09.2009, 21:29  
Benutzer
 
Registriert seit: 24.03.2009
Beiträge: 42
LeChuck befindet sich auf einem aufstrebenden Ast
Standard

@litterauspirna: Danke fuer den Hinweis.
Die Funktion hat auch schon so funktioniert, die hat das Bild automatisch verkleinert, unter Beibehaltung der Seitenverhaeltnisse, und dann in einem extra Verzeichnis gespeichert. Nun wollte ich aber gerne Quadratische Thumbnails haben, die nicht verzerrt sind.
Was ich halt nicht verstehe, andere benutzen imagecopyresampled Funktion zum schneiden (falls ich das richtig mitbekommen habe).
z.B. hier Cropping Images using PHP - TalkPHP

@nikosch, Akzeptieren muss ich es ja, was anderes bleibt mir nicht uebrig, einverstanden bin ich nicht. Es waere alles ja auch kein großes Problem gewesen, nur Deinen ersten Kommentar fand ich daneben und ungerechtfertigt. Und Dein zweiter war auch nicht unbedingt besser.

edit: Habe einfach eine falsche Funktion benutzt, ImageCopy is die richtige, fuer die Interessierten. (Mehr woltle ich auch gar nicht hoeren, keine kompletten Skripte oder Codeteile)

Geändert von LeChuck (21.09.2009 um 22:08 Uhr).
LeChuck ist offline   Mit Zitat antworten
Alt 21.09.2009, 22:15  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bild erst skalieren und dann zuschneiden - Forum: phpforum.de
Crossposting
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline   Mit Zitat antworten
Alt 21.09.2009, 22:45  
Benutzer
 
Registriert seit: 24.03.2009
Beiträge: 42
LeChuck befindet sich auf einem aufstrebenden Ast
Standard

Falls es jemanden interessiert, hier die komplette Funktion, kann gerne benutzt werden:

$bild_tmp_name ist die Datei aus dem Upload
$bild_neuer_name ist der Name, unter dem das Skalierte und zurechtgeschnittene Bild gespeichert werden soll
$neue_breite Ist die Ausgabebreite
$neue_hoehe ist die Ausgabehoehe

Dabei ist zu beachten: Das Bild wird erst skaliert und dann zurechtgeschnitten, es bleibt also unverzerrt. Der Ausschnitt wird immer aus der Mitte des Bildes genommen.


PHP-Code:
    function bild_skalieren($bild_tmp_name,$bild_neuer_name,$neue_breite,$neue_hoehe) {
        
$size=getimagesize($bild_tmp_name); 
        
$breite=$size[0]; 
        
$hoehe=$size[1];
        if(
$breite<$hoehe) {
            
$hoehe_skaliert=intval($hoehe*$neue_breite/$breite);
            
$breite_skaliert=$neue_breite;
        } else {
            
$hoehe_skaliert=$neue_hoehe;            
            
$breite_skaliert=intval($breite*$neue_hoehe/$hoehe);
        } 

        
$src_x=intval(($breite_skaliert-$neue_breite)/2);
        
$src_y=intval(($hoehe_skaliert-$neue_hoehe)/2);

        
$altesBild=imagecreatefromjpeg($bild_tmp_name); 
        
$neuesBild_skaliert=imagecreatetruecolor($breite_skaliert,$hoehe_skaliert);
        
$neuesBild_zugeschnitten=imagecreatetruecolor($neue_breite,$neue_hoehe);
        
ImageCopyResized($neuesBild_skaliert,$altesBild,0,0,0,0,$breite_skaliert,$hoehe_skaliert,$breite,$hoehe);
        
ImageCopy($neuesBild_zugeschnitten,$neuesBild_skaliert,0,0,$src_x,$src_y,$neue_breite,$neue_hoehe);        
        
ImageJPEG($neuesBild_zugeschnitten,"thumbnails/".$bild_neuer_name,100);
    } 
LeChuck ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Bild erstellen, speichern und gespeichertes Bild anzeigen Garog PHP Tipps 2009 26 11.07.2010 18:01
[Erledigt] Bild via PHP skalieren ocean85 PHP Tipps 2009 18 13.05.2009 15:24
Bild in enuem Fenster öffnen? K3HLIM JavaScript, Ajax und mehr 6 10.04.2009 20:43
Bildupload in CMS funktioniert nicht soffi PHP Tipps 2009 18 10.01.2009 18:24
[Erledigt] Bild anzeigen über $name t-stude Datenbanken 8 11.11.2008 15:34
[Erledigt] bild als link mit mouseover ohne zeilenumbruch SteiniKeule HTML, Usability und Barrierefreiheit 12 30.10.2008 21:12
[Erledigt] Bild verändert sich auf Klick Script errox JavaScript, Ajax und mehr 1 21.10.2008 20:51
Transparentes Bild über Bild legen *update gelöst* Broadcast PHP-Fortgeschrittene 11 04.02.2008 15:27
Bild skalieren --> pixelig rocco PHP-Fortgeschrittene 2 12.09.2007 16:14
[Erledigt] lokales bild auswaehlen, skalieren, dann uploaden, geht das? PHP Tipps 2006 9 24.01.2006 19:47
Bild vor dem Upload zuschneiden PHP Tipps 2005-2 15 16.10.2005 10:03
[Erledigt] Bild aus Datei in Bild einfügen PHP Tipps 2005-2 1 07.08.2005 23:36
[PHP«Image] Bild in ein anderes Bild einsetzen PHP Tipps 2005-2 4 07.08.2005 19:39
Bild größe hat prob mit umbenennung. JEGO PHP Tipps 2004 1 08.07.2004 16:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript bild zuschneiden, php bild zuschneiden, http://www.php.de/scriptboerse/59220-erledigt-bild-erst-skalieren-und-dann-zuschneiden.html, javascript bild beschneiden, bild zuschneiden javascript, php script bild zuschneiden, php bild skalieren und dann ausschnitt, php bild aus der mitte heraus skallieren, javascript bilder zuschneiden, imagecopyresampled zuschneiden, php bilder zuschneiden script, bild beschneiden javascript, php imagecopyresampled zuschneiden, ajax bild zuschneiden, php bilder zuschneiden, php bild zuschneiden quadratisch, bilder php script quadratisch zuschneiden, php javascript bild zuschneiden, javascript bild schneiden, imagecopyresized mitte ausschneiden

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum