Convertir les photos en SVG animé avec réagir, réagir les crochets et TypeScript | Chris Frewin | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Convertir les photos en SVG animé avec réagir, réagir les crochets et TypeScript

teacher avatar Chris Frewin, Full Stack Software Engineer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      0:43

    • 2.

      Comment convertir les photos en SVG optimisé, prêt pour le Web et le port pour réagir TypeScript

      24:50

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

84

apprenants

--

projet

À propos de ce cours

Apprendre votre chemin dans le cadre des SVG est une compétence importante pour tout concepteur ou développeur. Dans ce court cours « mini » qui n'a qu'une leçon, nous allons passer au cours d'un processus de travail consistant à amener une image capturée sur un téléphone, à l'éditer avec les outils opensource Gimp et Inkscape et à l'optimiser et à le porter sur le Web via un projet React TypeScript. En prime, nous écrirons un crochet réagir personnalisé pour animer Donc, même si vous n'êtes pas un développeur, vous pourriez trouver ce cours intéressant sur la façon dont les imagines bitmap peuvent être proprement converties en SVG. C'est la dernière moitié du mini-cours qui entre dans la partie logicielle mettant en œuvre l'implémentation React, TypeScript et Hook.

Rencontrez votre enseignant·e

Teacher Profile Image

Chris Frewin

Full Stack Software Engineer

Enseignant·e

Hi everyone!

I've been a professional full stack software engineer for 7+ years, and I've been programming for many more. In 2014, I earned two separate degrees from Clarkson University: Mechanical Engineering and Physics. I continued at Cornell for my M.S. Degree in Mechanical Engineering. My thesis at Cornell was a technical software project where I first learned Bash and used a unique stack of Perl and Fortran, producing a publication in the scientific journal Combustion and Flame: "A novel atom tracking algorithm for the analysis of complex chemical kinetic networks".

After opening up my first terminal while at Cornell, I fell in love with software engineering and have since learned a variety of frameworks, databases, languages, and design patterns, including TypeScrip... Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Apprendre à utiliser un SVG optimisé est une compétence importante pour tout concepteur ou développeur. Dans ce mini-cours, qui ne comporte qu'une leçon, nous allons partir d'une photo prise avec un téléphone normal. Nous allons optimiser cette image. Nous allons le convertir en SVG. Nous allons ensuite optimiser ce SVG pour le préparer pour le Web, puis créer un composant React SVG. Et puis en prime, nous ajouterons un hook React personnalisé pour animer l' arrière-plan de ce SVG. Et pendant tout ce temps, React utilisera TypeScript. C'était vraiment amusant d'enregistrer ce mini-cours. J'espère que tu as beaucoup appris. Commençons maintenant. 2. Comment convertir les photos en SVG optimisé, prêt pour le Web et le port pour réagir TypeScript: J'ai pensé que ce serait cool de mettre ce logo vraiment cool au dos ici et sur le devant à peu près à l'occasion du sixième anniversaire. Mais ce serait cool de le transformer en SVG. Et en prime, j'ajouterai un hook React personnalisé pour changer, à terme, cette couleur de fond rose. Ainsi, au fur et à mesure que nous déplaçons la souris, nous allons changer la couleur d'arrière-plan. Je vais donc vous en montrer le flux complet. J'ai pris une photo du devant et du dos de la chemise. Alors oui, passons au code et commençons à l'examiner. Comme je l'ai dit, j'ai déjà pris une photo du devant et du dos de la chemise juste avec un appareil photo iPhone normal et rien de spécial. La première chose que nous allons faire pour créer notre SVG basé sur React est d'ouvrir ces deux images dans GIMP. Je vais donc sélectionner les deux. Et nous allons les ouvrir dans GIMP ici. Maintenant que nous avons les deux images ici, la première chose à faire est de les faire pivoter. Nous descendons donc à Transform, faisons une rotation de 90 degrés. Et aussi pour le dos de la chemise, faites pivoter à 90 degrés. Ensuite, je vais passer à l'index du mode image. Et je vais convertir cela en une image en trois couleurs. Nous avons donc le noir, bleu clair et cette couleur rose vif. J'espère donc que Gimp fera du bon travail pour nous. Voyons comment ça se passe. Génial. Il a donc plus ou moins fait du bon travail. Je vais également faire de même ici. Et dans ce cas, nous n'avons pas trois couleurs, mais nous avons 12345, je suppose. Je crois qu'ils sont de la même couleur. Essayons donc d'indexer avec cinq couleurs et voyons ce qui se passe. Très bien, donc ça a l'air plutôt bien. La prochaine chose que nous allons faire est d'exporter ces images. Je vais juste dire que cette chemise est propre. Assurez-vous que la qualité est réglée à 100 %. Et pareil pour la façade ici. Et j'appellerai ça de la même façon. Chemise propre. Nous avons 100 % de qualité et nous les exporterons. Ensuite, nous allons ouvrir Inkscape. Maintenant qu' Inkscape est ouvert, nous allons importer ces deux photos nettoyées. J'ai les deux ici, vous pouvez sélectionner les deux avec Commande et cliquer. Et nous allons les ouvrir. Maintenant, Inkscape va vous demander ici quelques réglages que nous souhaitons fluides pour optimiser la qualité. L'intégration est correcte et à partir d'un fichier. Donc, assurez-vous que la seule chose importante ici est la fluidité, car nous voulons que la meilleure qualité d'image soit importante. Inkscape ouvrira donc par défaut ces deux images distinctes. Nous pouvons prendre le recto ici, et je vais juste le recopier au verso. L'avant se trouve à l' arrière, côte à côte. Ce sont toujours des images bitmap, et c'est là que la magie intervient. Comme nous l'avons dit, il s'agit d'une image en trois couleurs, et voici une image en cinq couleurs. Faisons donc d'abord les trois couleurs. Une fois que vous avez sélectionné votre bitmap. Je vais monter ici, Trace Bitmap. Et nous voulons effectuer plusieurs scans. Et au lieu d'utiliser des niveaux de luminosité, nous n'utiliserons pas de couleurs. Ensuite, nous voulons trois scans, un par couleur. En général, je supprime toutes ces optimisations, mais votre kilométrage peut varier. Ce qui est bien, c'est que vous pouvez continuellement les mettre à jour et décider si vous souhaitez et décider si vous souhaitez modifier ces valeurs. Parfois, le lissage permet d'obtenir des bords plus lisses, mais il semblerait que la valeur par défaut ici, sans aucune optimisation ni sélection de lisse, soit plutôt belle. Je vais donc dire OK. Et vous allez maintenant le voir ici, exactement superposé au bitmap. Ce n'est pas un bitmap comme celui-ci l'est toujours, indique l'image ci-dessous. Nous voyons plutôt qu'il s'agit d'un groupe de trois objets. Cela signifie que la trace a parfaitement fonctionné. Je vais juste le déplacer ici et me débarrasser de l'ancienne image. Maintenant, je vais faire de même pour le dos de la chemise. Tracez un bitmap. Numérisation multiple. Dans ce cas, nous avons cinq couleurs. Mettons-le à jour, voyons s'il reprend toutes les couleurs. Parfait. Ça a l'air génial. Disons, d'accord. Et maintenant, nous voyons que nous avons un groupe de cinq objets. Je vais donc le déplacer à nouveau et me débarrasser de l'ancienne image. Maintenant, nous allons nettoyer ces images. Donc, pour le devant de la chemise, je n'ai vraiment pas besoin de ce fond. Je veux juste le lettrage. Donc le bleu et le rose. Donc, la première chose que je vais faire est de me dissocier. Ce groupe de trois couleurs. En général, la trace se regroupe automatiquement. Et dans l'ensemble, nous pouvons simplement dissocier cela. Et nous voyons que nous avons sélectionné ce chemin obscur ici. Nous allons juste nous en débarrasser. Il semblerait donc qu'il y ait eu un artefact lors de la conversion en GIMP, mais ce n' est pas un problème non plus. Faites juste attention lorsque vous sélectionnez ici. Nous ne voulons pas supprimer la couche entière. Nous voulons simplement supprimer ce coin. Et comme il s'agit désormais d'un SVG, nous voulons juste récupérer les nœuds de ce SVG et nous allons supprimer ce coin. ne nous reste donc plus que la couche rose. Juste ce joli lettrage. Nous pouvons donc faire de même pour le dos de la chemise. Je vais dissocier cela. Et ici, il faut être un peu prudent car si l'on regarde de près la façon dont la chemise a été imprimée, ce noir n'est pas une couleur distincte. C'est littéralement l' arrière-plan de cette image. Nous devrons donc conserver une partie de cet arrière-plan, mais je vais en quelque sorte le remodeler de manière à créer un contour autour de l'ensemble de l'image. Ça va être un peu plus beau. Je crois. La première chose que je vais faire est de me débarrasser de ce rouge. Je ne sais pas exactement comment c'est apparu, mais je vais me débarrasser complètement de cette couche rouge. Nous pouvons donc simplement le supprimer. Et comme je l'ai dit, je vais commencer à remodeler ce fond noir. Nous pouvons donc faire de nombreuses optimisations ici. Je vais supprimer la majorité de ces nœuds et nous pourrons commencer à nettoyer. Maintenant, vous constaterez peut-être qu'à un moment donné, vous aurez besoin d'un autre nœud. C'est assez facile à résoudre. Assurez-vous simplement qu' au moins deux nœuds sont sélectionnés en maintenant la touche Maj enfoncée. Et nous appuyons simplement sur le bouton plus ici pour insérer un nouveau nœud, il va en avoir besoin de quelques autres. Donc, même s'ils sont tous les trois sélectionnés, je vais appuyer à nouveau sur le bouton plus et vous verrez qu'il en place un nouveau entre chaque sélection. Cela devrait donc me permettre de parcourir un bon kilomètre ici. Maintenant, nous allons le récupérer de haut en haut. Il suffit de le mettre sur le dessus. Ça a l'air plutôt sympa. Et j'ai remarqué que cette couleur ne se transférait pas vraiment parfaitement. Je vais juste prendre Aqua. Ça a l'air vraiment sympa. Et je vais également m' assurer que les sous-titres cet arrière-plan sont de la même couleur. Juste pour un peu d'unité. Peut copier ce code hexadécimal. Et quand je choisirai ceci ici, pourrai le coller à nouveau. Et ça a l'air plutôt bien. Je veux dire, l'arrière-plan n'est pas très propre, mais ce n'est bien sûr pas le but de cette vidéo. C'est pourquoi j'ai passé en revue un grand nombre de ces trucs. Et bien sûr, comme nous le savons, vous pouvez trouver une infinité de SVG sur Internet. Parfois, vous commencerez de toute façon avec un SVG. C'était juste un petit bonus pour vous montrer mon processus de conversion d'images bitmap en SVG. Nous avons presque terminé. Je vais sélectionner cette option et accéder aux propriétés du document. Je vais redimensionner la page en fonction du contenu. Je vais ajouter quelques marges. 50, c'est probablement très bien. Assurez-vous simplement que lorsque vous faites cela, vos unités sont exprimées en pixels. Si vous mesurez un pouce ou quelque chose comme ça, vous aurez d'énormes marges. Mais 50 me semble plutôt correct. Et je pense que c'est une bonne chose pour nous d'économiser. Je vais donc sélectionner Save As et je vais juste mettre le design de la chemise. Et bien sûr, avec l'extension SVG. Maintenant, Inkscape nous propose des options SVG, l'Inkscape SVG ou le SVG plan. Et puisque nous nous dirigeons vers le Web, nous voulons passer au format SVG pur et simple. Inkscape supprimera une petite partie de son balisage. Ce n'est donc pas si détaillé. Mais comme nous le verrons bientôt, nous allons encore optimiser le SVG. Je vais donc enregistrer ça. Maintenant, juste pour illustrer ce que nous allons faire ici, je suis dans mes téléchargements. Il s'agit du SVG que nous venons d'exporter. Et je vais ouvrir cela avec Visual Studio Code. Nous pouvons voir qu'il y a pas mal de déchets par ici. Il s'agit d'un énorme SVG. Ne serait-ce pas formidable s' il existait un outil capable de réduire la taille du SVG que nous venons d'exporter ? Nous pouvons donc l'utiliser facilement ou plus facilement dans React. Heureusement, il existe un tel outil pour nous et il s'agit cet outil SVG OMG de Jake Archibald. Il est hébergé sur l'une de ses pages GitHub. Je vais donc ouvrir le SVG que nous venons d'exporter. Et maintenant, l'avantage de cet outil, c'est que nous pouvons jouer avec de nombreux paramètres, réduisant ainsi la taille de notre SVG. En général, ceux qui économisent le plus d'espace sont ces deux-là, mais vous devez faire attention. Si je commence à réduire la précision trop bas, vous pourriez commencer à voir des arêtes étranges, etc. Mais vous pouvez voir qu'en faisant cela, nous sommes déjà descendus à 16 ko. Mais juste pour que ce ne soit pas si grossier, je pense que je vais laisser la précision numérique à un. Et nous pouvons jouer un peu avec la précision de la transformation. Je n'ai pas l'air d'y remarquer quoi que ce soit. Vous pouvez embellir le balisage. Peut effectuer plusieurs passes. Je ne vois pas quelles sont les différences, mais nous économisons un peu. Nous allons donc prendre ça. Et immédiatement, nous pouvons simplement appuyer sur Copier ici, et ce SVG est copié dans notre presse-papiers. Maintenant, je suis dans le sandbox du code et nous allons créer un sandbox. Et bien sûr, réagissez avec TypeScript. Et la première chose que nous allons faire ici est de créer un nouveau dossier appelé components. Et je vais créer un nouveau composant appelé SVG qui est un fichier TSX. Et ce n'est qu'un composant fonctionnel. Maintenant, nous pouvons essayer de simplement coller le SVG que nous venons de copier. Et si je nettoie ça, nous allons avoir quelques problèmes. Et essentiellement, le problème est que puisque le SVG est du XML original, il n'est pas exactement prêt pour le JSX. Heureusement, il existe un autre outil que nous pouvons utiliser pour cela. Et cet outil est Magic Dot React js.net. Nous pouvons donc simplement coller notre SVG et le générateur générera pour nous une syntaxe JSX valide. Maintenant, pour une raison quelconque, il décide toujours de créer un composant de classe. Mais bien sûr, nous n'avons besoin que du balisage contenu dans la déclaration de retour. Donc, si je fais défiler la page jusqu'en bas, nous aurons tout ce dont nous avons besoin et nous pourrons retourner dans notre bac à sable et réessayer. Maintenant, nous ne devrions pas avoir d' avertissement de syntaxe lorsque je mets en forme le document. Parfait, donc je vais enregistrer le composant SVG de ce t-shirt, et je vais nettoyer le composant de l'application ici. Disons que React plus SVG plus TypeScript est égal à cœur. Et je vais ajouter mon composant SVG. Je vais l'importer depuis les adversaires, au format SVG. Donc ça a déjà l' air plutôt bien. Et comme je l'ai mentionné, nous utiliserions un crochet personnalisé pour un crochet personnalisé pour changer cette couleur d' arrière-plan lorsque nous déplaçons la souris sur l'écran, changer cette couleur d' arrière-plan lorsque nous pour la rendre un peu amusante. Et je pense aussi que ce serait vraiment cool de changer ces deux couleurs. Nous devons donc d'abord revenir dans notre SVG, identifier quel chemin ou quels chemins y contribuent. Ensuite, nous utiliserons le crochet pour changer la couleur en fonction de la position de la souris. Alors d'abord, montons ici. Et si nous regardons le premier chemin répertorié, nous avons cette couleur. OK, c'est la, cette couleur beige clair. Ensuite, nous avons cette couleur FC. Bingo, nous avons trouvé notre couleur. Maintenant, si je cherche ça, oui, exactement. Je devrais le voir deux fois. Et c'est la couleur que nous voulons changer au fur et à mesure que la souris se déplace. La première chose que je vais faire, c'est qu'au lieu de garder cela codé en dur sous forme de chaîne, je vais le remplacer par une variable appelée simplement color. Et bien sûr, Code Sandbox va nous crier dessus parce que nous ne l'avons pas encore défini. Donc là-haut, je vais dire couleur. Et appelons ce hook, qui n'a pas encore été défini et qui n'a pas encore été implémenté. Disons que c'est un peu comme utiliser la couleur sur la souris. Déplacez-vous. Maintenant, il faut réellement implémenter ce hook. J'aime garder mon code organisé. Je place généralement mes crochets dans un dossier de crochets séparé. Nous pouvons l'appeler du même nom, utiliser la couleur au déplacement de la souris et exporter les const, utiliser la couleur au déplacement de la souris. Et pour l'instant, revenons au rouge. Nous pouvons déjà vérifier si tous les points sont correctement connectés. Je vais donc importer, utiliser la couleur lors des déplacements de la souris à partir des crochets. C'est un dossier de retour. Utilisez la couleur lorsque vous déplacez la souris. Sympa. Nous sommes donc à mi-chemin. Nous avons sélectionné la bonne couleur que nous voulons modifier. Et maintenant, c'est juste l'animation réelle lorsque nous déplaçons la souris pour changer cette couleur. Nous pouvons donc ajouter la définition du type de retour et indiquer que nous voulons toujours que la chaîne soit renvoyée par ce hook. Et bien sûr, étant donné que la couleur elle-même changera lorsque vous déplacez la souris, nous allons utiliser l'état d'utilisation pour définir notre couleur. Nous avons donc une couleur constante, couleur définie, et c' est l'état utilisé. Et je vais continuer à utiliser le rouge ici comme valeur initiale. Et nous devons l'importer depuis React. Bien, tout va toujours bien. Maintenant, pour commencer à écouter le mouvement de la souris, c'est une fenêtre. Ajoutez un écouteur d'événements. Et l'événement est un mouvement de souris. Et je vais définir une fonction de déplacement de la souris. Maintenant, dans React, ce n'est pas une bonne pratique de simplement définir cela ouvertement. Nous devrions faire un nettoyage de démontage et de démontage. Je vais donc le mettre dans un hook à effet utilisateur qui se trouve sur Mount. Avec un tableau de dépendances vide. J'ajouterais cet auditeur d'événements. Et la fonction de nettoyage, comme nous le savons, consiste à renvoyer une fonction depuis US Effect. Et ce serait Window Dot, supprimez Event Listener. Maintenant fluide et en mouvement de la souris. Nous allons maintenant définir cette fonction de déplacement de la souris. Et si nous examinons cet écouteur d' événements d'ajout pour le mouvement de la souris, nous voyons que nous obtenons un événement souris. Cela serait donc transmis dans cette fonction. Et comme notre image occupe une grande partie de l'écran, je ne pense pas qu'il soit trop naïf, comme implémentation initiale, de prendre toutes les dimensions de l'écran et de les baser sur une sorte de pourcentage de l'endroit où nous en sommes actuellement avec notre souris. Ainsi, par exemple, le pourcentage x de l'emplacement de notre souris sera le client x divisé par la largeur intérieure de l'écran. Et pareil pour pourquoi la fenêtre. Et puis peut-être en pourcentage moyen, nous pouvons additionner les 2 % x plus y, divisés par deux. Nous avons maintenant une sorte de pourcentage. Et ce qui me vient immédiatement à l'esprit, c'est que nous pouvons avoir une sorte de mélange de couleurs. Donc, la chose la plus simple à l'heure actuelle serait peut-être deux couleurs. Et avec ce cadeau, il y a une sorte de mélange entre eux. Vous pouvez essayer d'écrire votre propre fonction pour ce faire avec deux couleurs. Mais pour ma part, je vais utiliser une dépendance très populaire pour faire ce genre de choses. Et c'est ce qu'on appelle les chromosomes AS. Et avec chroma js, nous pouvons importer Kromer depuis un JS et définir une échelle à l'aide de la fonction d' échelle de Chrome. C'est donc une gamme chromatique. Et nous pouvons transmettre une ou plusieurs couleurs. Pour l'instant, je pense que je vais faire quelque chose. Essayons le rose et le violet. Et je vais également changer cette couleur initiale en rose, afin qu'elle soit plus proche de ce que nous avions à l'origine et du design. Maintenant, avec cette échelle se mélange entre les deux, avec une décimale, qui se mélange entre les deux, avec une décimale, c'est exactement ce que cela signifiera avec cet objet d'échelle. C'est aussi simple que d'appeler. Échelle moyenne. Et puis obtenir un hexagone. Je vais donc appeler cette couleur. Ensuite, bien sûr, réglez la couleur sur l'état, qui déclenchera l'exécution de ce hook puis, bien sûr, renverra la nouvelle couleur. Et la dernière chose à nettoyer ici, c'est qu'il semblerait que code sandbox se plaint ou plutôt TypeScript se plaint. Impossible de trouver les types de chroma JS. Ajoutons donc également les types pour Chroma JS. Maintenant, nous pouvons nettoyer tout cela et retrouvons l'application. Découvrez notre travail manuel ici. C'est très cool. Ainsi, lorsque nous déplaçons la souris, elle passe du rose au violet. Et grâce à cet algorithme nous avons défini ici, bien entendu, le total de 0 % est égal à 0 % lorsque x et y sont égaux à zéro, cela vous rapprochera le plus possible du rose. Et lorsque x et y sont proches de la hauteur intérieure ou de la largeur intérieure, cela vous donnera la valeur la plus proche du violet. Donc, comme dernière cerise sur le gâteau, nous allons revenir à notre SVG et corriger. Il semblerait qu'il y ait quelques petits problèmes frontaliers que nous pourrions régler. Et nous pouvons y remédier simplement en ajoutant une petite largeur de trait à notre SVG noir ici. Donc je vais juste le faire. Ce chemin noir du SVG est en fait celui-ci avec cette couleur foncée. Nous voyons donc que la première chose qui manque, c' est la couleur du trait elle-même, qui, en langage SVG, est simplement désignée par un trait. Et je vais faire le trait, bien sûr de la même couleur. Le remplissage. Sauvegardez-le et actualisez-le ici. Cela a peut-être fait quelque chose, mais augmentons le score à un et voyons à quoi cela ressemble. Rechargez ici. C'est presque résolu. Peut-être que si nous en passons à deux, cela nous suffira enfin. C'est très agréable. Voyez-le toujours, voyons à quoi ça ressemble. Si on saute jusqu'à quatre. Très bien, c'est plutôt bien. Nous pourrions revenir à Inkscape et corriger ces deux petits conseils ici, mais je suis plutôt satisfait de la façon dont cela est sorti. Petit projet sympa et amusant que nous avons fait. J'espère que vous avez appris quelque chose sur le fait transformer des bitmaps en SVG et de les transformer en SVG plus propres. C'était vraiment amusant pour moi. Et oui, faites-moi savoir si vous souhaitez plus de détails sur les astuces et les stratégies pour créer ces crochets personnalisés. À part ça, je suis super contente d'être de retour et je vous verrai la prochaine fois. Prends soin de toi.