Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozmiar zdjęcia z serwera zewnętrzengo
Forum PHP.pl > Forum > PHP
my_key
Witam.

Potrzebuje pobrać rozmiar zdjęcia, które znajduje się na zewnętrznym folderze, a co najważniejsze potrzebuje to zrobić szybko.

Rzecz ma się następująco... łączę się przy użyciu php przez protokół FTP z serwerem, pobieram listę zdjęć i chcę wyświetlić miniatury tych zdjęć i jednocześnie wyświetlić rozmiar oryginalnego zdjęcia, dlatego potrzebuję szybkiego pobierania rozmiaru zdjęcia.

Mogę to zrobić za pomocą funkcji
  1. <?php
  2. ?>

I działa. Mogę to zrobić za pomocą biblioteki CURL
  1. <?php
  2. public function getRemoteImageSize($url = ''){
  3.        if(function_exists('curl_init') && $url){
  4.            if(($ch = curl_init()) === false) return false;
  5.                       
  6.            curl_setopt($ch, CURLOPT_URL, $url);
  7.            curl_setopt($ch, CURLOPT_HEADER, 0);
  8.            curl_setopt($ch, CURLOPT_NOBODY, 0);
  9.            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
  11.            $curlImg = curl_exec($ch);
  12.            
  13.            curl_close($ch);
  14.            
  15.            $image = imagecreatefromstring($curlImg);
  16.            $ret['width'] = imagesx($image);
  17.            $ret['height'] = imagesy($image);
  18.            
  19.        }
  20.        return $ret;
  21.    }
  22. ?>

i też działa.

Problem pojawia się gdy muszę pobrać tą informację dla większej ilości zdjęć. Dlatego potrzebuję szybkiej metody aby to zrobić, może ktoś ma jakiś pomysł?

Z góry dziękuję za odpowiedź.
Pozdrawiam.
erix
Cytat
Problem pojawia się gdy muszę pobrać tą informację dla większej ilości zdjęć. Dlatego potrzebuję szybkiej metody aby to zrobić, może ktoś ma jakiś pomysł?

Zrób sobie skrypt, który działa po stronie serwera źródłowego - wywołanie ze ścieżką do obrazka, zwraca Ci wymiary.
my_key
Jak możesz zaobserwować korzystam z tych funkcji...
kilas88
Cytat(my_key @ 28.07.2009, 19:55:50 ) *
Jak możesz zaobserwować korzystam z tych funkcji...

Nie zauważyłem, sory.

A nie można przechowywać danych o rozmiarach w bazie danych? Jeśli nie ma w bazie to pobierasz i zapisujesz rozmiary, jeśli jest zapisane w bazie to tylko wyświetlasz. Coś na wzór buforowania.
my_key
Zapisanie danych w bazie danych nie wchodzi w grę.

A może ktoś wie na których bitach plików graficznych zapisane są rozmiary obrazu? Albo ktoś zna link gdzie mógłbym to wyczytać?
erix
Wikipedia: format pliku i przełączasz na angielski.
flashdev
Cytat(my_key @ 28.07.2009, 20:49:14 ) *
Zapisanie danych w bazie danych nie wchodzi w grę.

A może ktoś wie na których bitach plików graficznych zapisane są rozmiary obrazu? Albo ktoś zna link gdzie mógłbym to wyczytać?


Jak znajdziesz rozwiązanie problemu, to byłbym zobowiazany za podzielenie się tą wiedzą.
ndx
Hej,

Mogę się mylić, ale chyba convert może Ci pomóc.
DJ ProG
http://pastebin.4programmers.net/307

ale tak jak już podlinkował erix - getimagesize() pobiera dane z nagłówków,
dlatego jest bardziej optymalny niż download całego pliku i przetwarzanie go przez GD...
my_key
Hmm to skoro metoda getimagesize() pobiera informacje z nagłówków to powinna być najszybsza... z tym, że dla wolnego łącza przy większej ilość obrazków jest jeszcze za wolna i się nie wyrabia w czasie wykonywania skryptu, stąd było moje pytanie, czy jest coś szybsze... No ale chyba nie ma, wiec pozostaje AJAX i doczytywanie danych.
erix
Cytat
z tym, że dla wolnego łącza przy większej ilość obrazków jest jeszcze za wolna i się nie wyrabia w czasie wykonywania skryptu, stąd było moje pytanie, czy jest coś szybsze...

Hmm, nie używałem nigdy getimagesize" title="Zobacz w manualu PHP" target="_manual dla zdalnych plików, ale jeśli skorzystasz z tej lekko zmodyfikowanej wersji, to wystarczy odczytać max pół kilobajta każdego pliku.

Ale to nie zmienia faktu, że najlepiej by było zrobić skrypt-dyspozytor, który by w odpowiedzi podawał same wymiary.
my_key
Cytat(erix @ 29.07.2009, 09:31:11 ) *
Ale to nie zmienia faktu, że najlepiej by było zrobić skrypt-dyspozytor, który by w odpowiedzi podawał same wymiary.


Masz na myśli skrypt umieszczony na serwerze który zwróci wymiary zdjęcia?
Jeżeli tak, to jest to pewne rozwiązanie, jednak nie chciałbym się uciekać do takiej metody aby uniknąć wgrywania dodatkowego skryptu dla wielu kont.
erix
Cytat
Masz na myśli skrypt umieszczony na serwerze który zwróci wymiary zdjęcia?

Właśnie.

Cytat
Jeżeli tak, to jest to pewne rozwiązanie, jednak nie chciałbym się uciekać do takiej metody aby uniknąć wgrywania dodatkowego skryptu dla wielu kont.

No to jaki problem odpalać go via sudoers? Najmniejszy ruch wtedy byś miał, no bo co by ten skrypt więcej zwracał? 123x456? Max 10 bajtów, a nie kilkaset, gdybyś musiał przez nagłówki pobierać (GIF/PNG nie, ale JPEG).
my_key
Cytat
No to jaki problem odpalać go via sudoers?

Chyba nie kapuje:)

Cytat
Najmniejszy ruch wtedy byś miał, no bo co by ten skrypt więcej zwracał? 123x456?


Dokładnie tak, potrzebuje jedynie pobrać rozmiar danego zdjęcia.

Skrypt będzie działał na zasadzie bardzo prostego klienta FTP, mam dane do FTP, łączę się do serwera i pobieram pliki... Musiałbym umieszczać na każdym serwerze z którym się łączę skrypt odpowiedzialny za zwrócenie rozmiaru zdjęcia.
I pewnie jeżeli nie znajdę innego rozwiązania tak będę musiał postąpić.
Pytanie tylko o co chodzi z tym "sudoers" smile.gif
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.