Migmus
Migmus
Mirki nie mam już siły (╯︵╰,)

https://stackoverflow.com/questions/54574970/imagemagick-dont-know-how-to-solve

Problem: równe odstępy, fontsize w zależnosci od długosci znaków

#php #programowanie #programista15k #pytanie
  • Najlepsze
  • Wszystkie komentarze
Jare_K
@Migmus: ale ty na sztywno podajesz współrzędne tekstu (oś Y), więc czego oczekujesz?
getin
getin
0
MQs
MQs
0
@Migmus: Weź przedstaw ten problem po ludzku. Wpisz na sztywno wartość $text (html niepotrzebny), pokaż jak on się wyświetla i dlaczego źle.
Jare_K
@Migmus: jeszcze jedno - pamiętaj że współrzędna Y liczy się do baseline, czyli do podstawy pierwszej linii. Jak robisz odwrotkę - tekst 180 stopni, to twój baseline ląduje na górze dolnego znaku.
Jak chcesz zrobić test to zamień:

$image->annotateImage($draw2, 485, 0, 180, $text2);
Migmus
Migmus
Migmus Autor
0
@Jare_K: No właśnie wiem, ale nie wiem jak to ogarnąć funkcją
@getin: CSS mi tutaj za bardzo nie pomoże, wszystko jest w PHP - Imagemagick
@MQs: Po prostu nie wiem jak to ogarnąć, bo wszystko działa jak trzeba, tylko po prostu wychodzą nowe rzeczy ( ͡° ͜ʖ ͡°)
Migmus
Migmus
Migmus Autor
0
@Jare_K:

$image->annotateImage($draw2, 485, 270, 180, $text2);


zmieniłem
Migmus
Migmus
Migmus Autor
0
@Jare_K:
Bo jak jest jedna linia to można odmierzyć, ale jak jest już wiele to by musiałabyć jakaś funkcja.
Migmus
Migmus
Migmus Autor
0
@Jare_K @getin @MQs

Skrypt ma działać jak cuksy.com, użytkownik wpisuje tekst, tekst jest generowany na obrazie i ten obraz jest nanoszony na model 3d. Obraz generowany jest na https://cuksy.com/product/create-php-text?id=xxx?date=xxx
Url jest generowany dla sesji i wygasa, dlatego link i tak by Wam nie działał ( ͡° ͜ʖ ͡°)
Jare_K
@Migmus: no ja myślę, że wystarczy wziąć ilość linii tekstu minus jeden, pomnożyć razy wysokość linii i to dodać do twojej pozycji 270px.
A twój obrazek pokazuje dokładnie, gdzie masz linię bazową tekstu. Więc stąd ten offset, który trzeba dynamicznie wyliczyć.
Migmus
Migmus
Migmus Autor
0
@Jare_K: Ale tutaj znowu się kłania fontsize, bo skąd wezmę wysokość lini, jak ona jest zależna od fontsize a fontsize jest zmienny ?
Jare_K
@Migmus: musisz albo zdobyć przelicznik font size do line height dla wybranej czcionki albo ustawić jakiś line height większy niż rozmiar fonta. A że masz fonty różnych wielkości, to do twoich warunków będziesz musiał dodać te parametry.
Trzy opcje:
1. Możesz spróbować z wysokością linii tym: http://php.net/manual/en/imagickdraw.settextinterlinespacing.php

2. Możesz zmierzyć swój tekst tym: http://php.net/manual/en/imagick.queryfontmetrics.php

3. Możesz zrobić maksymalnie przycięty obrazek z odwróconego tekstu i wtedy go zaczepić w punkcie 270px
Migmus
Migmus
Migmus Autor
0
@Jare_K:
1. Ciężko to ogarnąć bo
Górny: tekst drugi obrócony
Środkowy: tekst pierwszy
Dolny: tekst drugi
Mogę ustawić odległości pomiędzy górnym i dolnym, a