Sto creando immagini con testo centrato. Io uso Python ma mi trovo di fronte a molte domande su come scrivere il mio class.
Lo so
A class must aim to do one thing and do it well.
Bene, l'unica cosa che voglio fare con questa classe è print centered text on a background image
, ma penso di aver bisogno di aiuto per capire davvero questo dato che ho molte domande:
- Devo scrivere una classe che abbia un metodo per creare lo sfondo Immagine?
- Dovrei avere un altro metodo nella stessa classe per mettere il testo al centro del immagine di sfondo?
- E quando salvi l'immagine sul disco? Dovrei hai un altro metodo per salvare l'immagine?
Se sono corretto, la mia classe sarà simile a questa:
# -*- coding: utf-8 -*-
class CreateImage():
def create_background(self):
print("Creating background")
def print_text_image(self, text):
print("Printing the following text on Image: ")
print(text)
def save(self, destination):
print("Saving the image on disk on: ")
print(destination)
my_object = CreateImage()
my_object.print_text_image("Hello World!")
my_object.save("Images/my_images")
~
Mi sembra bello. Ma il fatto è che il metodo print_text_image
ha molte responsabilità:
- Calcola la quantità di pixel dell'immagine che possiamo usare (larghezza * altezza)
- Calcola la quantità di pixel che il testo utilizzerà e se non si adatta riduciamo la dimensione del font fino a quando non si adatta (prova & errore)
- Calcola i margini e infine stampa il testo sull'immagine in modo centrato
Mi sembra che possiamo utilizzare almeno un altro metodo sulla mia classe CreateImage
:
- Un metodo per calcolare se la dimensione del carattere (testo) è abbastanza piccola da adattarsi all'immagine (restituisce true o false)
Ma non ne sono sicuro. Voglio avere un buon design nella mia classe perché in seguito userò questa classe come base per altre classi (ad esempio, un'altra classe incolla altre immagini nell'immagine che CreateImage
crea.)
In definitiva, quale sarebbe il tuo progetto per questa classe? Apprezzerò molto se ti prendi il tempo per aiutarmi a capire questo. Grazie mille in anticipo.