Materiały budowlane do naprawy szczegółów id obrazu php.

Materiały budowlane do naprawy szczegółów id obrazu php.

21.11.2021

Przesłany obraz jest przechowywany w katalogu na serwerze, a odpowiednia nazwa obrazu jest wstawiana do bazy danych. Ale jeśli chcesz przesłać obraz bez przechowywania na serwerze, możesz to zrobić za pomocą bazy danych MySQL. Jeśli martwisz się o miejsce na serwerze i potrzebujesz zwolnić miejsce na serwerze, możesz wstaw plik obrazu do bazy danych bez wgrywania go do katalogu. Ta procedura pomaga zoptymalizować przestrzeń serwera, ponieważ zawartość pliku obrazu jest przechowywana w bazie danych, a nie na serwerze.

W tym samouczku pokażemy Ci, jak to zrobić przechowuj plik obrazu w bazie danych MySQL oraz pobierz obraz z bazy danych za pomocą PHP... Bardzo łatwo jest przechowywać i pobierać obrazy z bazy danych za pomocą PHP i MySQL.

Wstaw plik obrazu do MySQL

MySQL ma typ danych BLOB (duży obiekt binarny), który może przechowywać dużą ilość danych binarnych. Typ danych BLOB jest idealny do przechowywania danych obrazu. W MySQL dostępne są cztery typy obiektów BLOB — TINYBLOB, BLOB, MEDIUMBLOB i LONGBLOB.

Aby przechowywać dane obrazu, należy utworzyć tabelę w bazie danych. Poniższy kod SQL tworzy tabelę obrazów z polem typu danych LONGBLOB w bazie danych MySQL.

CREATE TABLE `images` (`id` int (11) NOT NULL AUTO_INCREMENT,` image` longblob NOT NULL, `created` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

Formularz przesyłania obrazu

Poniższy formularz HTML pozwala użytkownikom wybrać plik obrazu do przesłania.

Wybierz obraz do przesłania:

Przechowuj obraz w bazie danych (upload.php)

Plik upload.php zawiera następujące funkcjonalności.

  • Sprawdź, czy użytkownik wybrał plik obrazu do przesłania.
  • Pobierz zawartość pliku obrazu według nazwy tmp_name.
  • Utwórz połączenie z bazą danych MySQL i wybierz bazę danych.
  • Wstaw binarną zawartość obrazu do tabeli obrazów.
if (isset ($ _ POST ["wyślij"])) (
$ check = getimagesize ($ _FILES ["obraz"] ["tmp_name"]);
if ($ sprawdź! == false) (
$ obraz = $ _FILES ["obraz"] ["tmp_name"];
$ imgContent = addslashes (file_get_contents ($ image)); /*
* Wstaw dane obrazu do bazy danych
*/

// szczegóły bazy danych

$dbHost = "host lokalny";
$dbNazwaUżytkownika = "root";
$ dbPassword = "*****";
$ dbName = "codexworld"; $ db = new mysqli ($ dbHost, $ dbUsername, $ dbPassword, $ dbName); // Sprawdź połączenie
if ($ db -> connect_error) (
die ("Połączenie nie powiodło się:". $ db -> connect_error);
) $ dataTime = data ("Y-m-d H:i:s"); // Wstaw zawartość obrazu do bazy danych
$ wstaw = $ db -> zapytanie ( "WSTAW do obrazów (obraz, utworzony) WARTOŚCI ("$ imgContent "," $ dataTime ")");
jeśli ($ wstaw) (
echo "Plik przesłany pomyślnie." ;
) w przeciwnym razie (
Echo „Przesyłanie pliku nie powiodło się, spróbuj ponownie”.;
}
) w przeciwnym razie (
Echo „Wybierz plik obrazu do przesłania”.;
}
}
?>

Pobierz obraz z bazy danych (view.php)

W tym pliku pobierzemy zawartość obrazu z bazy danych MySQL na podstawie identyfikatora i wyświetlimy na stronie internetowej. Aby renderować plik obrazu na stronie internetowej, Typ zawartości używany jest nagłówek.

if (! pusty ($ _ GET ["id"])) (
// szczegóły bazy danych
$dbHost = "host lokalny";
$dbNazwaUżytkownika = "root";
$ dbPassword = "*****";
$dbName = "świat kodeksu"; // Utwórz połączenie i wybierz DB
$ db = new mysqli ($ dbHost, $ dbUsername, $ dbPassword, $ dbName); // Sprawdź połączenie
if ($ db -> connect_error) (
die ("Połączenie nie powiodło się:". $ db -> connect_error);
} // Pobierz dane obrazu z bazy danych
$ wynik = $ db -> zapytanie ( "SELECT image FROM images WHERE id =($ _GET ["id"]) "); $ wynik -> num_rows> 0) (
$ imgData = $ wynik -> fetch_assoc (); // Renderuj obraz
nagłówek („Typ treści: obraz / jpg”);
echo $ imgData ["obraz"];
) w przeciwnym razie (
echo "Nie znaleziono obrazu...";
}
}
?>

Chcesz uzyskać pomoc we wdrożeniu, zmodyfikować lub rozszerzyć funkcjonalność tego skryptu?

W ciągu ostatnich kilku lat hosting przeszedł dramatyczną zmianę. Usługi hostingowe zmieniły sposób działania witryn internetowych. Istnieje kilka rodzajów usług, ale dzisiaj porozmawiamy o opcjach dostępnych dla dostawców hostingu dla sprzedawców. Są to hosting resellerów Linux i hosting resellerów Windows. Zanim zrozumiemy fundamentalne różnice między nimi, dowiedzmy się, czym jest hosting dla sprzedawców.

Hosting dla sprzedawców

Mówiąc prościej, hosting odsprzedawców to forma hostingu internetowego, w której właściciel konta może wykorzystać swoje dedykowane miejsce na dysku twardym i przydzieloną przepustowość w celu odsprzedaży stronom trzecim. Czasami sprzedawca może wypożyczyć serwer dedykowany od firmy hostingowej (Linux lub Windows) i dalej udostępniać go stronom trzecim.

Większość użytkowników witryny korzysta z systemu Linux lub Windows. Ma to związek z dyspozycyjnością. Obie platformy zapewniają, że Twoja witryna działa w 99% przypadków.

1. Dostosowanie

Jedna z głównych różnic między planem hostingu dla resellerów systemu Linux a tym dostarczanym przez system Windows dotyczy dostosowywania. Chociaż możesz eksperymentować z obydwoma odtwarzaczami na kilka sposobów, Linux jest znacznie bardziej konfigurowalny niż Windows. Ten ostatni ma więcej funkcji niż jego odpowiednik i dlatego wielu programistów i administratorów uważa Linuksa za bardzo przyjazny dla klienta.

2. Aplikacje

Różne usługi hostingowe dla sprzedawców mają różne zastosowania. Zarówno Linux, jak i Windows mają swój własny zestaw aplikacji, ale ten drugi ma przewagę, jeśli chodzi o liczby i wszechstronność. Ma to związek z otwartą naturą Linuksa. Każdy programista może przesłać swoją aplikację na platformę Linux, co czyni ją atrakcyjnym dostawcą usług hostingowych dla milionów właścicieli witryn.

Należy jednak pamiętać, że jeśli używasz Linuksa do hostingu, ale jednocześnie używasz systemu operacyjnego Windows, niektóre aplikacje mogą po prostu nie działać.

3. Stabilność

Chociaż obie platformy są stabilne, Linux Reseller Hosting jest bardziej stabilny. Jako platforma open source może pracować w kilku środowiskach. Platforma ta może być co jakiś czas modyfikowana i rozwijana.

4. Kompatybilność .NET

Nie chodzi o to, że Linux jest lepszy od systemu Windows pod każdym możliwym względem. Jeśli chodzi o kompatybilność z .NET, Windows skrada się w centrum uwagi. Aplikacje internetowe można łatwo tworzyć na platformie hostingowej Windows.

5. Korzyści kosztowe

Obie platformy hostingowe są niedrogie. Ale jeśli odczuwasz kryzys gotówkowy, powinieneś wybrać Linuksa. Jest bezpłatny i dlatego jest wybierany przez tak wielu programistów i administratorów systemu na całym świecie.

6. Łatwość konfiguracji

Windows jest łatwiejszy w konfiguracji niż jego odpowiednik. Wszystko, co zostało powiedziane i zrobione, Windows nadal zachowuje swoją przyjazność dla użytkownika przez te wszystkie lata.

7. Bezpieczeństwo

Wybierz hosting dla sprzedawców Linuksa, ponieważ jest bezpieczniejszy niż Windows. Dotyczy to zwłaszcza osób prowadzących swoje firmy e-commerce.

Wniosek

Wybór między nimibędzie zależeć od Twoich wymagań i elastyczności kosztów. Obie usługi hostingowe mają wyjątkowe zalety. Podczas gdy system Windows jest łatwy w konfiguracji, Linux jest opłacalny, bezpieczny i bardziej wszechstronny.



W marcu tego roku miałem bardzo złe doświadczenia z firmą medialną, która odmawiała mi zapłaty i odpowiedzi na moje e-maile. Wciąż są mi winni tysiące dolarów, a uczucie wściekłości przenika mnie każdego dnia. Okazuje się, że nie jestem sam, a setki innych właścicieli witryn są na tym samym wózku. Jest to rodzaj kursu z reklamą cyfrową.

Szczerze mówiąc, mam tego bloga przez długi czas i w przeszłości skakałem po różnych sieciach reklamowych. Po usunięciu jednostek reklamowych z tej firmy, która mnie usztywniła, wróciłem do punktu wyjścia. Powinienem również to zauważyć Nigdy nie podobał mi się produkt Google AdSense, tylko dlatego, że wydaje mi się „dnem beczki” reklam displayowych. Nie z perspektywy jakości, ale z punktu widzenia przychodów.

Z tego, co rozumiem, chcesz reklam Google w swojej witrynie, ale chcesz, aby robiły to również inne duże firmy i agencje. W ten sposób maksymalizujesz popyt i przychody.

Po moich negatywnych doświadczeniach poleciłem firmę Newor Media. I jeśli jestem „szczery”, na początku nie zostałem sprzedany, głównie dlatego, że „nie mogłem znaleźć wiele informacji na ich temat. Znalazłem kilka przyzwoitych recenzji na innych stronach i po rozmowie z kimś tam postanowiłem spróbować Powiem, że są SUPER pomocni.Każda sieć, z którą kiedykolwiek pracowałem, była dla mnie dość krótka, jeśli chodzi o odpowiedzi i rozpoczęcie pracy.Odpowiedzieli na każde pytanie i był to naprawdę zachęcający proces.

„Wyświetlam reklamy od kilku miesięcy, a zarobki są mniej więcej takie, jak zarabiałem w innej firmie. Nie mogę więc powiedzieć, czy są o wiele lepsze od innych, ale gdzie się wyróżniają to kwestia, którą naprawdę chcę poruszyć. Komunikacja z nimi jest inna niż w żadnej innej sieci, w której kiedykolwiek pracowałem. Oto przypadek, w którym naprawdę się różnią:

Przesłali mi pierwszą płatność na czas za pomocą Paypal. Ale ponieważ „nie jestem w Stanach Zjednoczonych (a zdarza się to każdemu, kogo myślę), otrzymałem opłatę pobraną z Paypal. Wysłałem e-maila o tym do mojego przedstawiciela, pytając, czy jest sposób, aby tego uniknąć w przyszłości.

Powiedzieli, że nie mogą uniknąć opłaty, ale żeby ZWROCILI WSZYSTKIE OPŁATY .... W TYM NAJNOWSZE PŁATNOŚCI! Nie tylko to, ale zwrot pieniędzy wpłynął w ciągu 10 MINUT! Kiedy kiedykolwiek byłeś w stanie złożyć taką prośbę bez konieczności przekazania jej do „działu finansowego”, aby nigdy nie otrzymać odpowiedzi.

Najważniejsze jest to, że kocham tę firmę. Być może uda mi się zarobić więcej gdzie indziej, „nie jestem do końca pewien, ale mają ze sobą wydawcę na całe życie. bardzo ważny klient, kiedy z nimi rozmawiam. To naprawdę powiew świeżego powietrza w branży, która jest pełna oszustw i braku reakcji.

Mikrokomputery, które zostały stworzone przez fundację Raspberry Pi w 2012 roku, odniosły ogromny sukces w pobudzaniu kreatywności u małych dzieci, a ta brytyjska firma zaczęła oferować programy startowe do nauki programowania, takie jak pi-top i Kano. Pojawił się nowy startup, który wykorzystuje elektronikę Pi, a urządzenie jest znane jako Pip, podręczna konsola, która oferuje ekran dotykowy, wiele portów, przyciski sterujące i głośniki. Ideą tego urządzenia jest zaangażowanie młodszych osób w urządzenie do gier, które jest retro, ale oferuje również naukę kodu za pośrednictwem platformy internetowej.

Niesamowita platforma oprogramowania oferowana z Pipem daje szansę na rozpoczęcie kodowania w językach Python, HTML/CSS, JavaScript, Lua i PHP. Urządzenie oferuje samouczki krok po kroku, które pomogą dzieciom zacząć od kodowania, a nawet pozwala na miganie diod LED. Chociaż Pip jest wciąż prototypem, z pewnością będzie wielkim hitem w branży i zaangażuje dzieci zainteresowane kodowaniem oraz zapewni im edukację i zasoby potrzebne do rozpoczęcia kodowania w młodym wieku.

Przyszłość kodowania

Kodowanie ma przed sobą wspaniałą przyszłość i nawet jeśli dzieci nie będą korzystać z kodowania w swojej karierze, mogą skorzystać na nauce kodowania za pomocą tego nowego urządzenia, które sprawi, że będzie to łatwiejsze niż kiedykolwiek. Dzięki Pip nawet najmłodsi entuzjaści kodowania nauczą się różnych języków i będą na dobrej drodze do tworzenia własnych kodów, własnych gier, własnych aplikacji i nie tylko. To przyszłość ery elektronicznej, a Pip pozwala na opanowanie podstawowych elementów kodowania.
Informatyka stała się ważną częścią edukacji, a dzięki urządzeniom takim jak nowy Pip dzieci mogą zacząć doskonalić swoją edukację w domu, jednocześnie dobrze się bawiąc. Kodowanie wykracza daleko poza samo tworzenie stron internetowych lub oprogramowania. Może być używany do zwiększenia bezpieczeństwa w mieście, do pomocy w badaniach w dziedzinie medycyny i nie tylko. Ponieważ żyjemy teraz w świecie zdominowanym przez oprogramowanie, kodowanie jest przyszłością i ważne jest, aby wszystkie dzieci miały przynajmniej podstawową wiedzę na temat tego, jak to działa, nawet jeśli nigdy nie wykorzystają tych umiejętności w swojej karierze. W przyszłości kodowanie będzie kluczowym elementem codziennego życia. Będzie to język świata, a nieznajomość komputerów i sposobu ich działania może stanowić wyzwanie równie trudne do pokonania jak analfabetyzm.
Kodowanie zapewni również poważne zmiany w świecie gier, zwłaszcza jeśli chodzi o gry online, w tym dostęp do kasyn online. Aby zobaczyć, jak kodowanie już poprawiło świat gier, spójrz na kilka najwyżej ocenianych witryn kasyn, które polegają na kodowaniu. Rzuć okiem, aby to sprawdzić i zobaczyć, jak kodowanie może przedstawiać realistyczne środowiska online.

Jak Pip angażuje dzieci

Jeśli chodzi o możliwość nauki kodowania, dzieci mają wiele możliwości. Istnieje wiele urządzeń i gadżetów sprzętowych, które można kupić, ale Pip stosuje inne podejście do swojego urządzenia. Przenośność urządzenia i ekranu dotykowego stanowią przewagę nad innymi urządzeniami kodującymi dostępnymi na rynku. Pip będzie w pełni kompatybilny z elementami elektronicznymi oprócz systemu Raspberry Pi HAT. Urządzenie korzysta ze standardowych języków i posiada podstawowe narzędzia i jest idealnym urządzeniem dla każdego początkującego programisty. Celem jest usunięcie wszelkich barier między pomysłem a kreacją i natychmiastowe udostępnienie narzędzi do użytku. Jedną z innych wielkich zalet Pip jest to, że używa karty SD, dzięki czemu może być używany jako komputer stacjonarny, gdy jest podłączony do monitora i myszy.
Urządzenie Pip pomoże dzieciom i zainteresowanym początkującym programistom z entuzjazmem uczyć się i ćwiczyć kodowanie. Oferując połączenie realizacji zadań i majsterkowania przy rozwiązywaniu problemów, urządzenie z pewnością zaangażuje młodsze pokolenie. Urządzenie pozwala następnie młodym programistom przejść na bardziej zaawansowane poziomy kodowania w różnych językach, takich jak JavaScript i HTML/CSS. Ponieważ urządzenie jest repliką konsoli do gier, natychmiast przyciągnie uwagę dzieci i zachęci je do nauki kodowania w młodym wieku. Jest również wyposażony w kilka wstępnie załadowanych gier, aby przyciągnąć uwagę, takich jak Pac-Man i Minecraft.

Innowacje, które nadejdą

Przyszłe innowacje w dużej mierze zależą od aktualnej zdolności dziecka do kodowania i jego ogólnego zrozumienia procesu. Gdy dzieci uczą się kodować w młodym wieku, korzystając z takich urządzeń jak nowy Pip, zdobędą umiejętności i wiedzę do tworzenia niesamowitych rzeczy w przyszłości. Może to być wprowadzenie nowych gier lub aplikacji, a nawet pomysłów, które mogą pomóc w badaniach medycznych i leczeniu. Możliwości są nieskończone. Ponieważ naszą przyszłością będzie sterować oprogramowanie i komputery, najlepiej zacząć od młodości, dlatego nowy Pip jest skierowany do młodych ludzi. Oferując urządzenie konsolowe, które może grać w gry, jednocześnie ucząc umiejętności kodowania, młodzi członkowie społeczeństwa są na dobrej drodze, aby w przyszłości zostać twórcami oprogramowania, które zmieni całe nasze życie. To dopiero początek, ale miliony dzieci na całym świecie zaczynają się tego uczyć i doskonalić. Dzięki urządzeniom takim jak Pip, podstawy kodowania są omówione, a dzieci szybko nauczą się różnych języków kodowania, które mogą prowadzić po niesamowitych ścieżkach, gdy wejdą w dorosłość.

Ostatnia modyfikacja 24 lutego 2017 r. przez Vincy.

Wyświetlając obrazy na naszych stronach internetowych, należy upewnić się, że można je ustawić w granicach naszego układu. Jeśli nie, musimy odpowiednio zmienić rozmiar tych obrazów. W PHP, zmiana rozmiaru obrazu, można to osiągnąć za pomocą zestawu funkcji PHP, aby utworzyć nowy obraz od podstaw, z podanymi wymiarami, w których oryginalny obraz ma zostać zmieniony.

Tak więc kombinacja takich funkcji jest używana do uzyskania następujących kroków, które spowodują pomyślną zmianę rozmiaru obrazu poprzez programowanie PHP.

  • Uzyskaj identyfikator obrazu dla obrazu źródłowego.
  • Uzyskaj identyfikator zasobu dla docelowej warstwy obrazu.
  • Zmiana rozmiaru i ponowne składanie.
  • Zapisz obraz o zmienionym rozmiarze w podanej lokalizacji docelowej.

Uzyskaj identyfikator zasobu obrazu dla obrazu źródłowego

Aby pracować z danym plikiem obrazu, który ma zostać zmieniony, musimy uzyskać identyfikator zasobu w celach informacyjnych, tak jak zrobiliśmy to po pobraniu zasobu pliku lub w podobny sposób, pobierając uchwyt katalogu do wykonania.

W PHP istnieją różne funkcje umożliwiające uzyskanie identyfikatora zasobu pliku obrazu. Funkcje te są używane odpowiednio w zależności od typu obrazu podanego do zmiany rozmiaru. Na przykład, imagecreatefromjpeg (), imagecreatefromgif (), imagecreatefrompng (), używany do pobierania identyfikatora zasobu dla obrazów JPEG, GIF i PNG.

W tym kroku najpierw musimy uzyskać typ obrazu za pomocą funkcji PHP pobierzrozmiar obrazu (), który służy do pobierania całej listy właściwości obrazu, w tym szerokości, wysokości itp. Następnie możemy zastosować odpowiednią funkcję, aby uzyskać identyfikator zasobu. Wszystkie te funkcje PHP używane do pobierania właściwości obrazu i danych zasobów pliku obrazu oczekują nazwy lub ścieżki do pliku obrazu. Na przykład,

$ file = "Boże Narodzenie.jpg"; $ source_properties = getimagesize (plik $); $ image_type = $ source_properties; if ($ image_type == IMAGETYPE_JPEG) ($ image_resource_id = imagecreatefromjpeg (plik $);) elseif ($ image_type == IMAGETYPE_GIF) ($ image_resource_id = imagecreatefromgif (plik $);) elseNGif ($ image_type == IMAGET) imagecreatefrom (plik $ );)

Używane w instrukcjach warunkowych są predefiniowane z odpowiednią wartością całkowitą określającą typ obrazu. Na przykład, IMAGETYPE_JPEG zdefiniowany wartością 2, która jest używana do wskazywania obrazu JPEG.

Uzyskaj identyfikator zasobu dla docelowej warstwy obrazu

Po uzyskaniu identyfikatora zasobu referencyjnego z pliku obrazu źródłowego, musimy utworzyć nowy obraz jako warstwę docelową. Ten obraz zostanie utworzony z wymiarami zgodnymi z przewidywanymi rozmiarami oryginalnego obrazu.

Wbudowana funkcja PHP, nazwana jako, imagecreatetruecolor () służy do tego celu, przyjmując wymagane wymiary, czyli szerokość i wysokość obrazu docelowego. Na przykład,

$ target_width = 200; $ wysokość_docelowa = 200; $ target_layer = imagecreatetruecolor ($ target_width, $ target_height);

imagecreatetruecolor () funkcja utworzy pusty obraz. Dodatkowo zwróci identyfikator danych zasobu jako referencję do nowo utworzonego obrazu z określonym parametrem szerokość i wysokość. To odniesienie będzie używane w kolejnych krokach, w celu wymienienia celu, na którym będzie składany obraz o zmienionym rozmiarze.

Zmiana rozmiaru i ponowne składanie

W tym kroku powinniśmy podać listę szczegółów dotyczących obrazu źródłowego i docelowego, które są używane w procesie zmiany rozmiaru obrazu. To są,

  • Identyfikator zasobu warstwy źródłowej i docelowej
  • Wymiary określające szerokość i wysokość oryginalnego obrazu i docelowej warstwy obrazu.

Korzystając z podanych informacji, wymagana część oryginalnego obrazu zostanie skopiowana i ponownie złożona na docelowej warstwie. W tym celu funkcja PHP, nazwana jako, obrazkopiowanyponownie () dla takiego procesu zmiany rozmiaru i ponownego składania. Na przykład,

Imagecopyresampled ($ target_layer, $ image_resource_id, 0,0,0,0, $ target_width, $ target_height, $ source_properties, $ source_properties);

W tym przykładzie kodu, pokazanym powyżej, niektóre argumenty tej funkcji są przekazywane z wartością 0. Te argumenty w rzeczywistości reprezentują współrzędne x, y odpowiednio obrazu docelowego i źródłowego.

Argumenty te będą zawierać wartości do przycięcia pewnej części obrazu źródłowego. W przeciwnym razie nie ma potrzeby wymieniania punktów x, y, co oznacza, że ​​cały obraz zostanie przycięty, aby zachować jego wygląd, z wyjątkiem jego wymiarów.

Notatka: Istnieje równoważna funkcja PHP obrazkopiowany w rozmiarze () tak jak obrazkopiowanyponownie (), natomiast obrazkopiowanyponownie () funkcja tworzy obraz o zmienionym rozmiarze z wyższą jakością, w porównaniu.

Zapisz obraz o zmienionym rozmiarze w lokalizacji docelowej

Wreszcie nadszedł czas na zapisanie obrazu o zmienionym rozmiarze w lokalizacji docelowej. W tym celu musimy określić następujące szczegóły.

  • Identyfikator zasobu warstwy obrazu o zmienionym rozmiarze.
  • Docelowa nazwa obrazu lub lokalizacja.

Teraz możemy użyć przykładowego kodu pokazanego poniżej, aby zapisać warstwę obrazu o zmienionym rozmiarze.

Imagejpeg ($ target_layer, "christmas_thump.jpg");

Przykładowy kod pokazany w każdym kroku dotyczy tylko obrazu JPEG. Możemy powtórzyć to samo dla innych typów obrazów, używając odpowiednich funkcji PHP.

Przykład: zmiana rozmiaru obrazu PHP

Ten przykład pokazuje, jak zmienić rozmiar dowolnego typu pliku obrazu przesłanego z formularza HTML. Tak więc skrypt PHP pokazany poniżej obsługuje przesyłany plik obrazu, który ma zostać zmieniony.

A kod HTML, który zawiera kontener formularza do przesłania pliku obrazu, to:

Zapewne zastanawiałeś się "Co to za liczby i gdzie jest moja droga do zdjęcia?" 🙂 Rzućmy okiem na kilka przykładów, jak możesz z tym pracować.

Jak znaleźć pełną ścieżkę do obrazu w Bitrix?

Zazwyczaj potrzebujemy plików graficznych, gdy mówimy o nowościach lub produktach. Dla takich pól z reguły właściwości elementu „ Zdjęcie do ogłoszenia" oraz " Szczegółowy obraz”. Czasami tworzone są właściwości bloku informacji, typem tej właściwości jest plik i jest używany do dodatkowych zdjęć (na przykład galeria produktów). Cały problem polega na tym, że Bitrix nie poda od razu gotowej ścieżki do pliku obrazu lub jego zmniejszonej kopii o zmienionym rozmiarze.

Radzę najpierw przeczytać krótki artykuł o wyświetlaniu elementów na stronie. później natkniemy się na podobny kod.

"ASC"), Array ("IBLOCK_ID" => $ iblock_id), false, false, Array ("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "DETAIL_PICTURE")); while ($ ar_fields = $ my_elements-> GetNext ()) (echo $ ar_fields ["PREVIEW_PICTURE"]."
";) endif;?>

i właściwie wszystko przebiegło poprawnie, otrzymaliśmy „kod obrazu”, pewien unikalny identyfikator pliku, za pomocą którego możemy uzyskać dane.

1C-Bitrix ma klasę Cplik- który służy do pracy z plikami i obrazami. Wykorzystamy to Metoda GetPath a pełną ścieżkę do obrazu otrzymamy na przykładzie zdjęcia do ogłoszenia (dla szczegółowego wszystko jest takie samo):

"ASC"), Array ("IBLOCK_ID" => $ iblock_id), false, false, Array ("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "DETAIL_PICTURE")); while ($ ar_fields = $ moje_elementy->
"; $ img_path = CFile :: GetPath ($ ar_fields [" PREVIEW_PICTURE "]); echo $ img_path."
";) endif;?>

Teraz wyświetla:

/upload/iblock/c2a/c2a29aad47791f81f6fa8fd038d83789.jpg /upload/iblock/35e/35e000d0e7c3a94b32fb086c627f87eb.jpg /upload/iblock/088/08847400f3c59cae2871cf97jpg

Świetnie, tego potrzebujesz. Teraz możemy użyć tagu HTML img, aby ustawić ścieżkę do obrazu. Zmień naszą linię z echem

Echo "
";

Jak zmienić rozmiar obrazów w Bitrix lub wykonać zmianę rozmiaru

Przed utworzeniem projektu lub nowego bloku informacyjnego, zawsze pomyśl „ jaki rozmiar powinny mieć moje obrazy?”. To bardzo ważne, ponieważ Jeśli nie skonfigurujesz redukcji obrazu po wczytaniu bloku informacyjnego, wygenerowaniu podglądu obrazu ze szczegółowego (jeśli to konieczne) i innych parametrach, to rozmiar Twojej strony może przekroczyć kilka megabajtów (a w bardzo rzadkich przypadkach nawet więcej niż 10 MB 🙂).

W rzeczywistości, jeśli ściśle dopasujesz rozmiar obrazu za pomocą CSS, obraz nadal ładuje się w pełnym rozmiarze i takie rzeczy nie będą działać:

// HTML // CSS .my-prev-image (szerokość: 200px; wysokość: 200px;)

Nie rozwiąże to naszego problemu z rozmiarem oryginalnego obrazu na stronie, a jedynymi obowiązującymi regułami, moim zdaniem, mogą być maksymalna szerokość oraz maksymalna wysokość.

Rozważmy przypadek, kiedy mamy już duże zdjęcia i chcemy uzyskać ich pomniejszone kopie. Metoda nam pomoże Plik CF :: Zmień rozmiar obrazu Pobierz... Jego zaletą jest to, że kiedy uruchamiamy stronę, tworzy ona zdjęcia w folderze / upload / resize_cache / ścieżka- a jeśli taki obraz już istnieje, to automatycznie zwróci nam drogę do niego. Dodatkowo możemy ustawić dowolny rozmiar, jakość, a nawet rodzaj skalowania obrazu.

Oto dostępne dla nas typy ( informacje zaczerpnięte z oficjalnej dokumentacji Bitrix):

  • BX_RESIZE_IMAGE_EXACT - skaluje do prostokąta $arSize zachowując proporcje, odcinając nadmiar;
  • BX_RESIZE_IMAGE_PROPORTIONAL - skaluje się z zachowaniem proporcji, rozmiar ograniczony do $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - skaluje z zachowaniem proporcji, rozmiar ograniczony do $arSize, poprawiona obsługa zdjęć pionowych.

Spróbujmy zmniejszyć nasze obrazy za pomocą ResizeImageGet:

"ASC"), Array ("IBLOCK_ID" => $ iblock_id), false, false, Array ("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "DETAIL_PICTURE")); while ($ ar_fields = $ my_elements-> GetNext ()) (// echo $ ar_fields ["PREVIEW_PICTURE"]."
"; // $ img_path = CFile :: GetPath ($ ar_fields [" PREVIEW_PICTURE "]); $ img_resize_path = CFile :: ResizeImageGet ($ ar_fields [" PREVIEW_PICTURE "], array (" szerokość "=>" 100 "," wysokość „=>” 150 „), BX_RESIZE_IMAGE_PROPORTIONAL); // echo”

"; print_r ($ img_resize_path); echo"
"; Echo"
";) endif;?>

$ img_resize_path ['źródło']- Mam nadzieję, że zauważyłeś, że ta metoda zwraca nam tablicę, a my potrzebujemy tylko src.

Przeanalizujmy w kolejności:

$ ar_pola ["ZAPOWIEDŹ_ZDJĘCIE "]- pole na kod pliku (dla szczegółowego zmień na $ar_fields ["DETAIL_PICTURE"]),

tablica ('szerokość ’=>’ 100 ′, ‘wysokość ’=>’ 150 ′) - wymiary finalnego obrazu (lub wspomniany arSize),

BX_ZMIEŃ ROZMIAR_OBRAZ_PROPORCJONALNE - rodzaj skalowania, o którym nasze obrazy nie wyjdą poza określone granice .

Oficjalna dokumentacja dla tej metody zawiera szczegółowy opis, dodatkowo opisuje pozostałe 4 parametry, których tutaj nie zastosowaliśmy ( Rozmiary początkowe, filtry, Natychmiastowa, jpgJakość) .

Po przesłaniu przez Ciebie lub Twoich użytkowników zasobów graficznych do Cloudinary możesz dostarczyć je za pomocą dynamicznych adresów URL. Możesz dołączyć instrukcje w swoich dynamicznych adresach URL, które informują Cloudinary, aby manipulować zasobami przy użyciu zestawu parametrów transformacji. Wszystkie manipulacje są wykonywane automatycznie w chmurze, a przekształcone zasoby są automatycznie optymalizowane, zanim zostaną skierowane przez szybką sieć CDN do użytkownika końcowego, aby zapewnić optymalne wrażenia użytkownika.

Możesz na przykład zmieniać rozmiar i przycinać, dodawać obrazy nakładek, rozmazywać lub pikselować twarze, stosować różnorodne efekty specjalne i filtry oraz stosować ustawienia w celu optymalizacji obrazów i dostarczania ich w sposób responsywny.

Biblioteka PHP Cloudinary upraszcza generowanie adresów URL transformacji w celu łatwego osadzania zasobów w aplikacji PHP.

Dostarczaj i przekształcaj obrazy

Możesz dostarczać swoje obrazy za pomocą metod generowania tagów obrazów lub za pomocą bezpośrednich dyrektyw budowania adresu URL.

Metoda cl_image_tag

Możesz dodawać obrazy do widoku PHP za pomocą metody pomocniczej cl_image_tag Cloudinary. Ta metoda generuje pełny adres URL zasobu obrazu na podstawie podanych parametrów transformacji i dodaje tag obrazu do kodu HTML:

cl_image_tag ( "próbka");

Powyższy kod generuje następujący tag obrazu HTML:

" https: //res.site/demo/image/upload/sample" >

W żądaniu można również uwzględnić parametry przekształcenia, na przykład w celu dostarczenia obrazu JPEG dopełnionego do szerokości 400 pikseli:

cl_image_tag ( "przykład.jpg", tablica ( "szerokość" => 400 , "przyciąć" => "Podkładka"));

Możesz albo dodać przekształcenia bezpośrednio do metody cl_image_tag (wszystkie przekształcenia będą w pojedynczym, płaskim komponencie wynikowego źródła adresu URL, jak powyżej) lub możesz je zdefiniować za pomocą parametru przekształcenia.

cl_image_tag ( "przykład.jpg", tablica ( "transformacja"=> tablica ( "szerokość" => 400 , "przyciąć" => "Podkładka")));

Przekształcenia łańcuchowe

Cloudinary obsługuje potężne transformacje. Możesz nawet połączyć wiele przekształceń razem w ramach jednego żądania przekształcenia, np. przyciąć obraz i dodać obramowanie. W niektórych przypadkach możesz chcieć wykonać dodatkowe przekształcenia w wyniku poprzedniego żądania przekształcenia. Aby to zrobić, możesz użyć przekształceń łańcuchowych.

Aby zastosować przekształcenia łańcuchowe w adresie URL transformacji, należy uwzględnić wiele składników transformacji oddzielonych znakiem „/”. Każdy składnik transformacji jest stosowany do wyniku poprzedniego. W PHP stosowanie wielu transformacji odbywa się poprzez określenie parametru transformacji jako tablicy tablic transformacji. Poniższy przykład najpierw przycina oryginalny obraz do określonego zestawu niestandardowych współrzędnych, a następnie przekształca wynik tak, aby wypełniał prostokąt 130x100:

cl_image_tag ( "brązowa_owca.jpg", tablica ( "transformacja"=> tablica (tablica ( "x"=>355 , „y”=>410 , "szerokość"=>300 , "wzrost"=>200 , "przyciąć"=>"przyciąć"), tablica ( "szerokość"=>130 , "wzrost"=>100 , "przyciąć"=>"napełnić"))))

Poniższy przykład stosuje 4 przekształcenia łańcuchowe: niestandardowe kadrowanie do 300x200, wypełnienie do 130x100, obrót o 20 stopni, a następnie skalowanie do 50%:

cl_image_tag ( "brązowa_owca.jpg", tablica ( "transformacja"=> tablica (tablica ( "x"=>355 , „y”=>410 , "szerokość"=>300 , "wzrost"=>200 , "przyciąć"=>"przyciąć"), tablica ( "szerokość"=>130 , "wzrost"=>100 , "przyciąć"=>"napełnić"), tablica ( "kąt"=> 20), tablica ( "szerokość"=>0.5 , "przyciąć"=>"skala"))))

Aby uzyskać więcej informacji na temat przekształceń obrazu, zobacz.

Tworzenie bezpośredniego adresu URL

Opisana powyżej metoda cl_image_tag generuje tag obrazu HTML. W pewnych warunkach możesz chcieć wygenerować adres URL transformacji bezpośrednio, bez tagu zawierającego obraz. Aby zwrócić tylko adres URL, użyj metody pomocnika widoku cloudinary_url. Oto kilka przykładów:

cloudinary_url ( "przykład.jpg", tablica ( "szerokość" => 100 , "wzrost" => 150 , "przyciąć" => "napełnić")); // Dane wyjściowe: "https: //res..jpg"

cloudinary_url ( „przykładowy_arkusz kalkulacyjny.xls”, tablica ( "typ_zasobu" => "surowe")); // Dane wyjściowe: "https: //res..xls"

Zastosuj typowe przekształcenia obrazu

Ta sekcja zawiera omówienie i przykłady następujących często używanych funkcji transformacji obrazu, wraz z łączami do bardziej szczegółowej dokumentacji na temat tych funkcji:

Pamiętaj, że ta sekcja ma na celu jedynie wprowadzenie do podstaw używania transformacji obrazu w PHP.

Aby uzyskać wyczerpujące wyjaśnienia dotyczące implementowania szerokiej gamy przekształceń, zobacz przekształcenia obrazu. Aby uzyskać pełną listę wszystkich obsługiwanych przekształceń obrazu i ich użycia, zobacz Odniesienie do transformacji obrazu.

Zmiana rozmiaru i przycinanie

Istnieje wiele różnych sposobów zmiany rozmiaru i / lub przycinania obrazów oraz kontrolowania obszaru obrazu, który jest zachowywany podczas przycinania.

Poniższy przykład wykorzystuje metodę przycinania wypełnienia w celu wygenerowania i dostarczenia obrazu, który całkowicie wypełnia żądany rozmiar 250x250, zachowując oryginalne proporcje. Wykorzystuje grawitację wykrywania twarzy, aby zapewnić zachowanie i wyśrodkowanie wszystkich twarzy na obrazie podczas kadrowania obrazu:

Oryginalny obraz Wypełnij kadrowanie grawitacją „twarzy”

Aby uzyskać szczegółowe informacje na temat wszystkich opcji zmiany rozmiaru i przycinania, zobacz

Konwersja do innego formatu obrazu

Możesz dostarczyć dowolny obraz przesłany do Cloudinary w zasadniczo dowolnym formacie obrazu. Istnieją 3 główne sposoby konwertowania i dostarczania w innym formacie:

  • Określanie publicznego identyfikatora obrazu z żądanym rozszerzeniem.
  • Jawnie ustaw żądany format za pomocą parametru fetch_format.
  • Użyj automatycznego fetch_format, aby poinstruować Cloudinary, aby dostarczył obraz w najbardziej zoptymalizowanym formacie dla każdej przeglądarki, która go żąda.

Dostarcz plik .jpg w formacie .gif:

Pozwól Cloudinary wybrać optymalny format dla każdej przeglądarki. Na przykład w przeglądarce Chrome ten obraz jest dostarczany w formacie .webp.

Możesz wybierać spośród szerokiej gamy efektów graficznych, ulepszeń i filtrów, które możesz zastosować do swoich zdjęć. Dostępne efekty obejmują różnorodne efekty balansu kolorów i poziomów, barwienie, rozmycie, pikselowanie, wyostrzanie, efekty automatycznej poprawy, filtry artystyczne, nakładki obrazu i tekstu, efekty zniekształcenia i zmiany kształtu, kontury, tła, cienie i inne.

Na przykład poniższy kod stosuje efekt kreskówkowania, efekt zaokrąglania rogów i efekt koloru tła (a następnie skaluje obraz w dół do wysokości 300 pikseli).

cl_image_tag ( "aktor.jpg", tablica ( "transformacja"=> tablica (tablica ( "efekt"=>"kreskówka"), tablica ( "promień"=>„maks”), tablica ( "efekt"=>"zarys: 100", "kolor"=>"jasny niebieski"), tablica ( "tło"=>"jasny niebieski"), tablica ( "wzrost"=>300 , "przyciąć"=>"skala"))))

Aby uzyskać więcej informacji na temat dostępnych efektów i filtrów obrazu, zobacz Stosowanie efektów i filtrów obrazu

Dodawanie nakładek tekstowych i graficznych

Możesz dodać obrazy i tekst jako nakładki na główny obraz. Do obrazów nakładek można zastosować te same typy przekształceń, co w przypadku dowolnego obrazu, a do kontrolowania położenia nakładek można użyć ustawień grawitacji lub współrzędnych x i y. Możesz także zastosować różne przekształcenia tekstu, takie jak kolor, czcionka, rozmiar, obrót i inne.

Na przykład poniższy kod nakłada zdjęcie pary na obraz kubka. Zdjęcie nakładki jest przycinane za pomocą wykrywania twarzy z dostosowanym nasyceniem kolorów i zastosowanym efektem winiety. Słowo miłość jest dodawane różową, fantazyjną czcionką i obrócone w celu dopasowania do projektu, dodawana jest również grafika balonu, a finalny obraz jest przycinany, a rogi zaokrąglane.

cl_image_tag ( "filiżanka_kawy.jpg", tablica ( "transformacja"=> tablica (tablica ( "szerokość"=>400 , "wzrost"=>250 , "powaga"=>"południe", "przyciąć"=>"napełnić"), tablica ( "narzuta"=>"miła para", "szerokość"=>1.3 , "wzrost"=>1.3 , "powaga"=>"twarze", "flagi"=>„krewny_regionu”, "przyciąć"=>"przyciąć"), tablica ( "efekt"=>"nasycenie: 50"), tablica ( "efekt"=>"winieta"), tablica ( "flagi"=>"zastosuj_warstwę", "szerokość"=>100 , "promień"=>„maks”, "powaga"=>"środek", „y”=>20 , "x"=>-20 , "przyciąć"=>"skala"), tablica ( "narzuta"=>"balon", "wzrost"=> 55), tablica ( "efekt"=>"odcień: -20", "kąt"=> 5), tablica ( "flagi"=>"zastosuj_warstwę", "x"=>30 , „y”=> 5), tablica ( "narzuta"=> tablica ( "rodzina czcionek"=>"Ciastko", "rozmiar czcionki"=>40 , "grubość czcionki"=>"pogrubiony", "tekst"=>"Miłość"), "efekt"=>"koloryzować", "kolor"=>„#f08”), tablica ( "kąt"=>20 , "flagi"=>"zastosuj_warstwę", "x"=>-45 , „y”=> 44), tablica ( "szerokość"=>300 , "wzrost"=>250 , "x"=>30 , "przyciąć"=>"przyciąć"), tablica ( "promień"=>60 ))))

Aby uzyskać dogłębny przegląd wielu sposobów optymalizacji obrazów, zobacz Optymalizacja obrazu

Responsywne ustawienia obrazu

Responsywne projektowanie stron internetowych to metoda projektowania stron internetowych, która zapewnia użytkownikom optymalne wrażenia podczas oglądania, niezależnie od urządzenia, rozmiaru okna, orientacji czy rozdzielczości użytej do ich wyświetlenia. Zapewnienie optymalnego doświadczenia oznacza, że ​​należy unikać wysyłania obrazów o wysokiej rozdzielczości, które mają zmieniony rozmiar po stronie klienta, co powoduje znaczne straty przepustowości dla użytkowników małych wyświetlaczy. Zamiast tego należy zawsze dostarczać obraz o odpowiednim rozmiarze dla każdego urządzenia i rozmiaru ekranu.

Na przykład możesz zapewnić, że każdy użytkownik otrzyma obrazy o rozmiarze i współczynniku pikseli urządzenia (dpr), które pasują do jego urządzenia, korzystając z wartości auto dla atrybutów dpr i width. Wartość auto jest zastępowana rzeczywistymi wartościami po stronie klienta na podstawie rzeczywistych ustawień przeglądarki i szerokości okna:

cl_image_tag ( "moje zdjęcie", tablica ( "transformacja"=> tablica (tablica ( „dpr” => "automatyczny", "czuły"=> PRAWDA, "szerokość" => "automatyczny", "przyciąć" => "skala", "kąt"=> 20), tablica ( "efekt" => „sztuka: hokusai”, " : " granica " => " 3 px_solid_rgb: 00390 b "," promień " => 20))));

Cloudinary oferuje kilka opcji uproszczenia złożoności dostarczania responsywnych obrazów. Aby uzyskać szczegółowy przewodnik dotyczący wdrażania tych opcji, zobacz



© 2021 skypenguin.ru - Wskazówki dotyczące opieki nad zwierzętami