Varför görs inte thumbnails

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742156
Inlägg Skrivet: 2018-04-08 17:10      Ämne: Varför görs inte thumbnails Citera

Jag gör om en gammal kod till mysqli och det fungerar bra förutom bildernas uppladdning. Originalbilden laddas upp och får nytt namn men thumbnails hindras (enligt system av säkerhetsskäl). Vad är felet? Jag har letat efter ny kod för den händelse denna inte stöds längre men hittar ingenting jag kan använda.

KOD:
1:
// we'll get extension from the original filename
2:
$pathinfo=pathinfo($_FILES['imagefile']['name']);
3:
$extension=strtolower($pathinfo['extension']);
4:
echo "EXTENSION: " . $extension . "<p>"; //debug
5:
 
6:
if($extension!='jpg' && $extension!='gif' && $extension!='png') {
7:
   die("Bad image file type");
8:
}
9:
 
10:
// create unique random filename
11:
$filename = md5(rand() * time()) . ".$extension";
12:
 
13:
echo "FILENAME: " . $filename . "<p>"; //debug
14:
 
15:
// copy original file to images/originals directory with new filename
16:
$original="images/originals/$filename";
17:
move_uploaded_file($tempfile, $original);
18:
echo "move_uploaded_file($tempfile, $original);<p>"; //debug
19:
 
20:
// resize and copy to images directory
21:
system("convert -thumbnail 800x600 $original images/$filename");
22:
echo "convert -thumbnail 800x600 $original images/$filename<p>"; //debug
23:
 
24:
// resize to thumbnail and copy to images/tn directory
25:
system("convert -thumbnail 160 $original images/thumbnails/thumb_$filename");
26:
echo "convert -thumbnail 160 $original images/thumbnails/thumb_$filename<p>"; //debug
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4322 dagar
Från: Tavesta
Status: Offline



#742159
Inlägg Skrivet: 2018-04-08 17:36      Ämne: Citera

Finns mappen för thumbnails och har webbservern skrivrättigheter där?

Om du inte kan använda system("convert ... ") så kan du titta på de php-funktioner som kan användas för bildskalning.
GD: http://php.net/manual/en/book.image.php
Imagemagic: http://php.net/manual/en/imagick.resizeimage.php
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742160
Inlägg Skrivet: 2018-04-08 17:50      Ämne: Citera

Tack för svar.
Mappen finns. Hur kontrollerar man om webbservern har skrivrättigheter? Den döper om originalfilen till nytt namn och flyttar den till en mapp för original men resten görs inte.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4322 dagar
Från: Tavesta
Status: Offline



#742161
Inlägg Skrivet: 2018-04-08 18:38      Ämne: Citera

Du kan testa om du kan spara fil i mappen med:
PHP:
1:
 file_put_contents('images/thumbnails/testfil.txt''test'); 


Du kan också kolla vad du får för retur från system:
PHP:
1:
 $returvärde system('convert ...
2:
var_dump($returvärde); 
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742166
Inlägg Skrivet: 2018-04-09 10:50      Ämne: Citera

Tack. Jag fick ett resturvärde och skrivarrättigheterna är ok.
Jag försöker titta på Imagick::resizeImage() på php.net men förstår inte hur maan ska skriva. Jag tycker w3 är mer pedagogiska för en som inte kan så mycket (i detta fall jag) men de har ingenting om den funktionen.

[code]
<?php

$thumb = new Imagick();
$thumb->readImage('myimage.gif'); $thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->clear();
$thumb->destroy();

?>[/]
Detta begriper jag men inte hur jag ska definiera funktionen Imagick() före denna kod.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4322 dagar
Från: Tavesta
Status: Offline



#742168
Inlägg Skrivet: 2018-04-09 11:44      Ämne: Citera

Imagick är i det här fallet inte en funktion, utan en klass.
Om inte den finns tillgänglig så antar jag att det är nödvändigt att installera den på webbservern, vilket kanske inte är någon lösning i det här fallet.
Jag antar att koden körs på ett webbhotell, där du inte kan detaljstyra över vad som installeras och hur det konfigureras.

Det kanske är större sannolikhet att GD finns installerat.
Titta på exempelkoden här:
http://php.net/manual/en/function.imagecopyresampled.php
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742169
Inlägg Skrivet: 2018-04-09 13:28      Ämne: Citera

Tack
Ja jag ser nu att meddelandet säger klass, inte odefinierad function.
Ja jag kör koden på webbhotellet och får
meddelandet att den inte hittar klassen.
Ska titta på det andra men jag läste att det var en sämre lösning eftersom en del bilder inte blev bra. Va anser du om det?
Är det inte dessutom så att den bara tar en bit av en bild istället för att skala om hela bilden?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4322 dagar
Från: Tavesta
Status: Offline



#742170
Inlägg Skrivet: 2018-04-09 13:51      Ämne: Citera

Jag tror nog GD duger i normalfallet för att skapa thumbnails.
Funktionen jag länkade till skalar om bilden på bästa sätt som GD kan åstadkomma.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742171
Inlägg Skrivet: 2018-04-10 17:17      Ämne: Citera

Tack Harald!
Som vanligt är det lärorikt att få del av din kunskap. Tills vidare valde jag att ladda upp en version och visa den i olika storlekar. Det gör sidan lite långsammare men ger mig tid att lära mig använda den funktion du föreslår.

Jag undrar hur man får nedanstående kod att bli generell typ get filename så man kan ladda upp bilder utan att först ange filnamn och typ.

KOD:
1:
 
2:
$filename = 'test.jpg';
3:
$percent = 0.5;
4:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4581 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#742172
Inlägg Skrivet: 2018-04-10 21:30      Ämne: Citera

Du kan hitta orginalnamn och mer kul info om det uppladdade objektet i $_FILES
http://php.net/manual/en/features.file-upload.post-method.php

Det kan även vara bra att scriptet ge filen ett unikt namn typ orginalnamn + datetime
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
portalhumlan



Medlem i: 2144 dagar

Status: Offline



#742181
Inlägg Skrivet: 2018-04-14 14:27      Ämne: Citera

Tack Harald!
Jag ska läsa på. Jag vill minnas att jag för några år sedan fick ge alla bilder nytt namn eftersom det skulle fungera i mobil och pc och att då mobilen döpte alla bilder man tog till bild.jpg helt enkelt vilket gjorde att de ersattes i databasen på ett sätt som inte var avsikten.
Tack för all hjälp och tips. Ha en bra dag!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4322 dagar
Från: Tavesta
Status: Offline



#742182
Inlägg Skrivet: 2018-04-14 16:06      Ämne: Citera

Du kan använda file_exists() för att se om en fil med angivet namn redan finns, och om den gör det kan man ju ändra till ett nytt namn.

När man använder filnamn från besökaren så är det viktigt att kontrollera att filnamnet är av lämplig typ.
Det man framför allt bör kontrollera är att namnändelsen är rätt och att namnet inte innehåller några olämpliga skrivtecken, som t.ex "/".
Även inledande punkt kan ha oönskade bieffekter.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic