Bildgröße nachträglich ändern?

hallo, ich habe artikel in meinen shop eingepflegt und würde jetzt den artikelbildern eine neue bildgröße geben ohne jedes artikelbild neu hochladen zu müssen. die neuen bildgrößen habe ich in den grundeinstellungen und in der css datei schon geändert. wenn ich manuell die artikelbilder neu hochlade funktioniert alles. gibt es eine möglichkeit alle artikelbilder auf die neue größe in einem rutsch zu ändern? mfg

Es gibt zwar im Wiki einen Artikel dazu: http://wiki.shopware.de/Nachtraegliche- … il_35.html , der gilt aber bis Version 3.0.4 Man kann aber auf eine ähnliche Weise die Bilder ändern, wenn es übers Backend nicht möglich ist.

[quote=“waldicom”]Es gibt zwar im Wiki einen Artikel dazu: http://wiki.shopware.de/Nachtraegliche- … il_35.html , der gilt aber bis Version 3.0.4 Man kann aber auf eine ähnliche Weise die Bilder ändern, wenn es übers Backend nicht möglich ist.[/quote] welche möglichkeiten hab ich? ohne ein grafikprogramm zu nutzen. funktioniert dieses sqript auch bei der aktuellen version. wäre schade wenn etwas zu schaden kommt.:slight_smile: mfg

Ja, das wäre schade :slight_smile: Was man machen könnte, wenn man kein Staging System hat: die Tabelle kopieren, Bilder kopieren und im Skript die Tabelle/Pfade ändern. Danach prüfen.

Ich verwende das Script immer. Hatte noch nie Probleme mit Shopware 3.5.x

Hallo, [quote]ottscho schrieb: Ich verwende das Script immer. Hatte noch nie Probleme mit Shopware 3.5.x[/quote] habe das Script mit SW 3.5.6 ausprobiert - ohne Erfolg Gib es da ein neues Script/Methode für das nachträgliche Anpassen der Thumbs? Danke, topdirndl

Was heißt ohne Erfolg? Fehlermeldung? Ich habe das Script ebenfalls mit 3.5.6 benutzt und es ging bei mir.

[quote=„ottscho“]Was heißt ohne Erfolg? Fehlermeldung? [/quote] Hallo ottscho, vielen Dank für die Message. „ohne Erfolg“ heißt, dass meine Vorgabe: alle Thumbs mit der Nummer „5“ auf eine bestimmte Größe zu setzen (nachträglich), nicht geklappt hat. Es kam/kommt keine Fehlermeldung, nur => „235 zu aktualisierende Bilder…“ bedeutet das, dass noch was gemacht werden muss - oder wars das schon, denn alle bereits vorhandenen Thumbs sind unverändert. Da ich im Backend die Thumbgröße entsprechend geändert habe, werden nur die neuen Bilder meiner Vorgabe angepasst.

Das Problem wird der Timeout sein. Ich konnte immer nur ca. 80 Bilder auf einmal ändern. Werden den von den 235 Bilder auch welche namentlich ausgegeben? Diese wurden dann angepasst.

Ich weiß nicht ob Timeout der „Überltäter“ ist… Habe über Filezilla gesehen, dass einige hochgeladene Bilder andere Berechtigungen haben: 644 und Bilder die angepasst werden können haben 777 Wie kann denn sein, dass übers Backend hochgeladene Artikelbilder verschiedene Berechtigungen haben? Aber: wenn nun doch der Timeout das Problem verursacht => wie lösen? Danke im Voraus

Ich habe in die Schleife eine Abfrage eingebaut: $count=0; while ($row = mysql\_fetch\_assoc($result)) { if ($count \>= 80) break; if ($count \< 0) { $count = $count + 1; continue; } ... ... ... Und dann beim zweiten Aufruf mit 160 80 Dritter Aufruf: 240 160 Ist nicht gerade das schönste, aber funktioniert. Normalerweise sollte man das Script anpassen, dass es sich immer wieder selbst aufruft bis alle Bilder abgearbeitet wurden.

Danke für den Tip, ottscho. Hat jetzt bissl mehr geklappt: das Script ist dreimal (wie beschrieben) ausgeführt worden, es sind mehr Bilder als vorher angepasst aber eben nicht alle. Es sind noch welche dabei, die nicht angetastet wurden. Aber, wie auch immer - noch läuft das Ganze auf einer “Spielwiese”, wo ich Shopware teste. Ich denke, wenn ich im “richtigen” System, bevor ich Bilder/Artikel einpflege, sämtliche Einstellungen vornehme, sollte es doch klappen - oder… Weiß jemand Bescheid, warum die Berechtigungen der Bilder unterschiedlich sind? Gruß, topdirndl

Ganz am Anfang des Skripts: set\_time\_limit(0);

hallo, ich habe das sqrit auch mal probiert, nur ich habe das problem bei mir das ich png dateien benutze und das sqript nicht macht was es soll. gibt es eine möglichkeit um png dateien zu ändern?

Hallo, [quote]gibt es eine möglichkeit um png dateien zu ändern?[/quote] Ja das Script ist leider nur auf jpg zugeschnitten, darum geht es nicht. …also du willst auch, das im Shop dann png bilder verwendet werden? Möglicherweise funktioniert das hier. Aber: keine Garantie! Vielleicht habe ich einen Fehler gemacht. Erstmal an einer Testinstallation ausprobieren, denn ich habe das nicht getestet und ich bin bei weitem nicht so fähig wie Ottscho oder waldicom. Vielleicht schauen die beiden hier auch nochmal drüber… Den passenden Code findet man in der \engine\backend\modules\articles\bild_class.php Ggf. dann noch um die Hinweise von Ottscho bzw. waldicom ergänzen. [code]<?php include (“config.php”);

mysql_connect($DB_HOST, $DB_USER, $DB_PASSWORD);
$db_select = mysql_select_db($DB_DATABASE);
$bild = new bildedit();
$uploaddir = ‘images/articles/’;
if (!is_dir($uploaddir)){
die("$uploaddir it´s not a directory");
}

// Thumbnail - Number der zu aktualisierenden Größe und neue Größe x/y in px
$thb = 1;
$thb_x = 70;
$thb_y = 70;

$sql = “SELECT img FROM s_articles_img”;
$result = mysql_query($sql);

echo “”.mysql_num_rows($result)." zu aktualisierende Bilder “; while ($row = mysql_fetch_assoc($result)) { $filename = $row[“img”].”.png"; $uploadfile = $uploaddir . basename($filename); if (!file_exists($uploaddir)){ die ("$uploadfile it´s not a file
rn"); } $pictureSize = getimagesize($uploadfile); echo “Source: “.$uploadfile.” ({$pictureSize[“x”]} / {$pictureSize[“y”]}) “; if (!$thb_y){ $bild->resize($uploadfile,$thb_x,0,1,$uploaddir.$row[“img”].”_$thb.png”); }else { $bild->resize_dynamic($uploadfile,$thb_x,$thb_y,1,$uploaddir.$row[“img”]."_$thb.png"); } echo “Target: “.$uploaddir.$row[“img”].”_$thb.png”." ($thb_x / $thb_y) "; } class bildedit { function resize ($picture, $new_width, $new_height, $mode, $newfile) { $image=imagecreatefrom($picture); //erstellt ein Abbild im Speicher $size=getimagesize($picture); //ermittelt die Größe des Bildes $breite=$size[0]; //die Breite des Bildes $hoehe=$size[1]; //die Höhe des Bildes // Verhältnis Breite zu Höhe bestimmen $verhaeltnis = $breite/$hoehe; if ($breite < $new_width){ $breite_neu = $breite; }else { $breite_neu = $new_width; } $hoehe_neu = round($breite_neu / $verhaeltnis,0); $newImage=imagecreatetruecolor($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen imagealphablending($newImage, false); imagesavealpha($newImage, true); imagecopyresampled($newImage,$image,0,0,0,0,$breite_neu,$hoehe_neu,$breite,$hoehe); imageend($newImage,$newfile); //Thumbnail speichern imagedestroy($image); imagedestroy($newImage); } function resize_dynamic ($picture, $new_width, $new_height, $mode, $newfile) { $image=imagecreatefrom($picture); //erstellt ein Abbild im Speicher $size=getimagesize($picture); //ermittelt die Größe des Bildes $breite=$size[0]; //die Breite des Bildes $hoehe=$size[1]; //die Höhe des Bildes // Verhältnis Breite zu Höhe bestimmen if ($breite > $hoehe){ $verhaeltnis = $breite/$hoehe; $breite_neu = $new_width; $hoehe_neu = round($breite_neu / $verhaeltnis,0); }else { $verhaeltnis = $hoehe/$breite; $hoehe_neu = $new_height; $breite_neu = round($hoehe_neu / $verhaeltnis,0); } $newImage=imagecreatetruecolor($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen imagealphablending($newImage, false); imagesavealpha($newImage, true); imagecopyresampled($newImage,$image,0,0,0,0,$breite_neu,$hoehe_neu,$breite,$hoehe); imageend($newImage,$newfile); //Thumbnail speichern imagedestroy($image); imagedestroy($newImage); } } ?>[/code] Grüße rattaui

[quote=“rattatui”]Hallo, [quote]gibt es eine möglichkeit um png dateien zu ändern?[/quote] Ja das Script ist leider nur auf jpg zugeschnitten, darum geht es nicht. …also du willst auch, das im Shop dann png bilder verwendet werden? Möglicherweise funktioniert das hier. Aber: keine Garantie! Vielleicht habe ich einen Fehler gemacht. Erstmal an einer Testinstallation ausprobieren, denn ich habe das nicht getestet und ich bin bei weitem nicht so fähig wie Ottscho oder waldicom. Vielleicht schauen die beiden hier auch nochmal drüber… Den passenden Code findet man in der \engine\backend\modules\articles\bild_class.php Ggf. dann noch um die Hinweise von Ottscho bzw. waldicom ergänzen. [code]<?php include (“config.php”);

mysql_connect($DB_HOST, $DB_USER, $DB_PASSWORD);
$db_select = mysql_select_db($DB_DATABASE);
$bild = new bildedit();
$uploaddir = ‘images/articles/’;
if (!is_dir($uploaddir)){
die("$uploaddir it´s not a directory");
}

// Thumbnail - Number der zu aktualisierenden Größe und neue Größe x/y in px
$thb = 1;
$thb_x = 70;
$thb_y = 70;

$sql = “SELECT img FROM s_articles_img”;
$result = mysql_query($sql);

echo “”.mysql_num_rows($result)." zu aktualisierende Bilder “; while ($row = mysql_fetch_assoc($result)) { $filename = $row[“img”].”.png"; $uploadfile = $uploaddir . basename($filename); if (!file_exists($uploaddir)){ die ("$uploadfile it´s not a file
rn"); } $pictureSize = getimagesize($uploadfile); echo “Source: “.$uploadfile.” ({$pictureSize[“x”]} / {$pictureSize[“y”]}) “; if (!$thb_y){ $bild->resize($uploadfile,$thb_x,0,1,$uploaddir.$row[“img”].”_$thb.png”); }else { $bild->resize_dynamic($uploadfile,$thb_x,$thb_y,1,$uploaddir.$row[“img”]."_$thb.png"); } echo “Target: “.$uploaddir.$row[“img”].”_$thb.png”." ($thb_x / $thb_y) "; } class bildedit { function resize ($picture, $new_width, $new_height, $mode, $newfile) { $image=imagecreatefrom($picture); //erstellt ein Abbild im Speicher $size=getimagesize($picture); //ermittelt die Größe des Bildes $breite=$size[0]; //die Breite des Bildes $hoehe=$size[1]; //die Höhe des Bildes // Verhältnis Breite zu Höhe bestimmen $verhaeltnis = $breite/$hoehe; if ($breite < $new_width){ $breite_neu = $breite; }else { $breite_neu = $new_width; } $hoehe_neu = round($breite_neu / $verhaeltnis,0); $newImage=imagecreatetruecolor($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen imagealphablending($newImage, false); imagesavealpha($newImage, true); imagecopyresampled($newImage,$image,0,0,0,0,$breite_neu,$hoehe_neu,$breite,$hoehe); imageend($newImage,$newfile); //Thumbnail speichern imagedestroy($image); imagedestroy($newImage); } function resize_dynamic ($picture, $new_width, $new_height, $mode, $newfile) { $image=imagecreatefrom($picture); //erstellt ein Abbild im Speicher $size=getimagesize($picture); //ermittelt die Größe des Bildes $breite=$size[0]; //die Breite des Bildes $hoehe=$size[1]; //die Höhe des Bildes // Verhältnis Breite zu Höhe bestimmen if ($breite > $hoehe){ $verhaeltnis = $breite/$hoehe; $breite_neu = $new_width; $hoehe_neu = round($breite_neu / $verhaeltnis,0); }else { $verhaeltnis = $hoehe/$breite; $hoehe_neu = $new_height; $breite_neu = round($hoehe_neu / $verhaeltnis,0); } $newImage=imagecreatetruecolor($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen imagealphablending($newImage, false); imagesavealpha($newImage, true); imagecopyresampled($newImage,$image,0,0,0,0,$breite_neu,$hoehe_neu,$breite,$hoehe); imageend($newImage,$newfile); //Thumbnail speichern imagedestroy($image); imagedestroy($newImage); } } ?>[/code] Grüße rattaui[/quote] hallo, danke für die hilfe. ich bekomme folgene fehlermeldung! 459 zu aktualisierende Bilder Source: images/articles/88c48651d7bdb7e31808e6ef34c3c65e.png ( / ) Fatal error: Call to undefined function imagecreatefrom() in /www/htdocs/rtzrzrz/ftzrtz.php on line 91 mfg

Hi, ersetze mal die Zeile 91 durch folgendes: $image=$this-\>imagecreatefrom($picture); //erstellt ein Abbild im Speicher Bitte dann mal erneut probieren und wieder bescheid sagen… Grüße rattatui

Ich bin mir nicht ganz sicher, was ihr da versucht, oder es fehlen Teile vom Code…aber vielleicht tut’s die Funktion imagecreatefrompng()?

[quote=“ovi”]Ich bin mir nicht ganz sicher, was ihr da versucht, oder es fehlen Teile vom Code…aber vielleicht tut’s die Funktion imagecreatefrompng()?[/quote] Hi ovi, ich habe letztendlich auch nur den Code des Scriptes mit entsprechenden Teilen der bild_class.php abgeglichen und sicher war ich mir auch nicht. Aber vielleicht ist imagecreatefrompng() ja genau das richtige. Grüße rattatui

hallo, ich habe beides probiert leider ohne erfolg. $image=$this->imagecreatefrom($picture); //erstellt ein Abbild im Speicher $image=$this->imagecreatefrompng($picture); //erstellt ein Abbild im Speicher fehlermeldung: 459 zu aktualisierende Bilder Source: images/articles/88c48651d7bdb7e31808e6ef34c3c65e.png ( / ) Fatal error: Call to undefined method bildedit::imagecreatefrompng() in /www/htdocs/dfgdfg/dgdg.php on line 91 mfg