Просмотр исходного кода

Remove finmoji and add a way to download emojis in packs

These packs are stored in a git repo on pleroma gitlab
tags/v1.1.4
Ekaterina Vaartis 5 лет назад
Родитель
Сommit
c26724cc55
100 измененных файлов: 141 добавлений и 87 удалений
  1. +2
    -2
      config/config.exs
  2. +98
    -0
      lib/mix/tasks/pleroma/emoji.ex
  3. +41
    -85
      lib/pleroma/emoji.ex
  4. Двоичные данные
      priv/static/finmoji/1000px/a_trusted_friend.png
  5. Двоичные данные
      priv/static/finmoji/1000px/alandislands.png
  6. Двоичные данные
      priv/static/finmoji/1000px/association.png
  7. Двоичные данные
      priv/static/finmoji/1000px/auroraborealis.png
  8. Двоичные данные
      priv/static/finmoji/1000px/baby_in_a_box.png
  9. Двоичные данные
      priv/static/finmoji/1000px/bear.png
  10. Двоичные данные
      priv/static/finmoji/1000px/black_gold.png
  11. Двоичные данные
      priv/static/finmoji/1000px/christmasparty.png
  12. Двоичные данные
      priv/static/finmoji/1000px/crosscountryskiing.png
  13. Двоичные данные
      priv/static/finmoji/1000px/cupofcoffee.png
  14. Двоичные данные
      priv/static/finmoji/1000px/education.png
  15. Двоичные данные
      priv/static/finmoji/1000px/fashionista_finns.png
  16. Двоичные данные
      priv/static/finmoji/1000px/finnishlove.png
  17. Двоичные данные
      priv/static/finmoji/1000px/flag.png
  18. Двоичные данные
      priv/static/finmoji/1000px/forest.png
  19. Двоичные данные
      priv/static/finmoji/1000px/four_seasons_of_bbq.png
  20. Двоичные данные
      priv/static/finmoji/1000px/girlpower.png
  21. Двоичные данные
      priv/static/finmoji/1000px/handshake.png
  22. Двоичные данные
      priv/static/finmoji/1000px/happiness.png
  23. Двоичные данные
      priv/static/finmoji/1000px/headbanger.png
  24. Двоичные данные
      priv/static/finmoji/1000px/icebreaker.png
  25. Двоичные данные
      priv/static/finmoji/1000px/iceman.png
  26. Двоичные данные
      priv/static/finmoji/1000px/joulutorttu.png
  27. Двоичные данные
      priv/static/finmoji/1000px/kaamos.png
  28. Двоичные данные
      priv/static/finmoji/1000px/kalsarikannit_f.png
  29. Двоичные данные
      priv/static/finmoji/1000px/kalsarikannit_m.png
  30. Двоичные данные
      priv/static/finmoji/1000px/karjalanpiirakka.png
  31. Двоичные данные
      priv/static/finmoji/1000px/kicksled.png
  32. Двоичные данные
      priv/static/finmoji/1000px/kokko.png
  33. Двоичные данные
      priv/static/finmoji/1000px/lavatanssit.png
  34. Двоичные данные
      priv/static/finmoji/1000px/losthopes_f.png
  35. Двоичные данные
      priv/static/finmoji/1000px/losthopes_m.png
  36. Двоичные данные
      priv/static/finmoji/1000px/mattinykanen.png
  37. Двоичные данные
      priv/static/finmoji/1000px/meanwhileinfinland.png
  38. Двоичные данные
      priv/static/finmoji/1000px/moominmamma.png
  39. Двоичные данные
      priv/static/finmoji/1000px/nordicfamily.png
  40. Двоичные данные
      priv/static/finmoji/1000px/out_of_office.png
  41. Двоичные данные
      priv/static/finmoji/1000px/peacemaker.png
  42. Двоичные данные
      priv/static/finmoji/1000px/perkele.png
  43. Двоичные данные
      priv/static/finmoji/1000px/pesapallo.png
  44. Двоичные данные
      priv/static/finmoji/1000px/polarbear.png
  45. Двоичные данные
      priv/static/finmoji/1000px/pusa_hispida_saimensis.png
  46. Двоичные данные
      priv/static/finmoji/1000px/reindeer.png
  47. Двоичные данные
      priv/static/finmoji/1000px/sami.png
  48. Двоичные данные
      priv/static/finmoji/1000px/sauna_f.png
  49. Двоичные данные
      priv/static/finmoji/1000px/sauna_m.png
  50. Двоичные данные
      priv/static/finmoji/1000px/sauna_whisk.png
  51. Двоичные данные
      priv/static/finmoji/1000px/sisu.png
  52. Двоичные данные
      priv/static/finmoji/1000px/stuck.png
  53. Двоичные данные
      priv/static/finmoji/1000px/suomimainittu.png
  54. Двоичные данные
      priv/static/finmoji/1000px/superfood.png
  55. Двоичные данные
      priv/static/finmoji/1000px/swan.png
  56. Двоичные данные
      priv/static/finmoji/1000px/the_cap.png
  57. Двоичные данные
      priv/static/finmoji/1000px/the_conductor.png
  58. Двоичные данные
      priv/static/finmoji/1000px/the_king.png
  59. Двоичные данные
      priv/static/finmoji/1000px/the_voice.png
  60. Двоичные данные
      priv/static/finmoji/1000px/theoriginalsanta.png
  61. Двоичные данные
      priv/static/finmoji/1000px/tomoffinland.png
  62. Двоичные данные
      priv/static/finmoji/1000px/torillatavataan.png
  63. Двоичные данные
      priv/static/finmoji/1000px/unbreakable.png
  64. Двоичные данные
      priv/static/finmoji/1000px/waiting.png
  65. Двоичные данные
      priv/static/finmoji/1000px/white_nights.png
  66. Двоичные данные
      priv/static/finmoji/1000px/woollysocks.png
  67. Двоичные данные
      priv/static/finmoji/128px/a_trusted_friend-128.png
  68. Двоичные данные
      priv/static/finmoji/128px/alandislands-128.png
  69. Двоичные данные
      priv/static/finmoji/128px/association-128.png
  70. Двоичные данные
      priv/static/finmoji/128px/auroraborealis-128.png
  71. Двоичные данные
      priv/static/finmoji/128px/baby_in_a_box-128.png
  72. Двоичные данные
      priv/static/finmoji/128px/bear-128.png
  73. Двоичные данные
      priv/static/finmoji/128px/black_gold-128.png
  74. Двоичные данные
      priv/static/finmoji/128px/christmasparty-128.png
  75. Двоичные данные
      priv/static/finmoji/128px/crosscountryskiing-128.png
  76. Двоичные данные
      priv/static/finmoji/128px/cupofcoffee-128.png
  77. Двоичные данные
      priv/static/finmoji/128px/education-128.png
  78. Двоичные данные
      priv/static/finmoji/128px/fashionista_finns-128.png
  79. Двоичные данные
      priv/static/finmoji/128px/finnishlove-128.png
  80. Двоичные данные
      priv/static/finmoji/128px/flag-128.png
  81. Двоичные данные
      priv/static/finmoji/128px/forest-128.png
  82. Двоичные данные
      priv/static/finmoji/128px/four_seasons_of_bbq-128.png
  83. Двоичные данные
      priv/static/finmoji/128px/girlpower-128.png
  84. Двоичные данные
      priv/static/finmoji/128px/handshake-128.png
  85. Двоичные данные
      priv/static/finmoji/128px/happiness-128.png
  86. Двоичные данные
      priv/static/finmoji/128px/headbanger-128.png
  87. Двоичные данные
      priv/static/finmoji/128px/icebreaker-128.png
  88. Двоичные данные
      priv/static/finmoji/128px/iceman-128.png
  89. Двоичные данные
      priv/static/finmoji/128px/joulutorttu-128.png
  90. Двоичные данные
      priv/static/finmoji/128px/kaamos-128.png
  91. Двоичные данные
      priv/static/finmoji/128px/kalsarikannit_f-128.png
  92. Двоичные данные
      priv/static/finmoji/128px/kalsarikannit_m-128.png
  93. Двоичные данные
      priv/static/finmoji/128px/karjalanpiirakka-128.png
  94. Двоичные данные
      priv/static/finmoji/128px/kicksled-128.png
  95. Двоичные данные
      priv/static/finmoji/128px/kokko-128.png
  96. Двоичные данные
      priv/static/finmoji/128px/lavatanssit-128.png
  97. Двоичные данные
      priv/static/finmoji/128px/losthopes_f-128.png
  98. Двоичные данные
      priv/static/finmoji/128px/losthopes_m-128.png
  99. Двоичные данные
      priv/static/finmoji/128px/mattinykanen-128.png
  100. Двоичные данные
      priv/static/finmoji/128px/meanwhileinfinland-128.png

+ 2
- 2
config/config.exs Просмотреть файл

@@ -100,8 +100,8 @@ config :pleroma, :emoji,
shortcode_globs: ["/emoji/custom/**/*.png"],
groups: [
# Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md`
Finmoji: "/finmoji/128px/*-128.png",
Custom: ["/emoji/*.png", "/emoji/custom/*.png"]
Finmoji: ["/finmoji/128px/*-128.png", "/instance/static/emoji/finmoji/128px/*-128.png"],
Custom: ["/emoji/*.png", "/emoji/custom/*.png", "/instance/static/emoji/**/*.png"]
]

config :pleroma, :uri_schemes,


+ 98
- 0
lib/mix/tasks/pleroma/emoji.ex Просмотреть файл

@@ -0,0 +1,98 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Mix.Tasks.Pleroma.Emoji do
use Mix.Task

@shortdoc "Manages Pleroma instance"
@moduledoc """
"""

defp fetch_manifest do
Tesla.get!("https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json").body
|> Poison.decode!()
end

def run(["ls-packs"]) do
Application.ensure_all_started(:hackney)

manifest = fetch_manifest()

Enum.each(manifest, fn {name, info} ->
to_print = [
{"Name", name},
{"Homepage", info["homepage"]},
{"Description", info["description"]},
{"License", info["license"]},
{"Source", info["src"]}
]

for {param, value} <- to_print do
IO.puts(IO.ANSI.format([:bright, param, :normal, ": ", value]))
end
end)
end

def run(["get-pack", pack_name]) do
Application.ensure_all_started(:hackney)

manifest = fetch_manifest()

if Map.has_key?(manifest, pack_name) do
pack = manifest[pack_name]
src_url = pack["src"]

IO.puts(
IO.ANSI.format([
"Downloading pack ",
:bright,
pack_name,
:normal,
" from ",
:underline,
src_url
])
)

binary_archive = Tesla.get!(src_url).body

IO.puts("Unpacking #{pack_name} pack")

static_path = Path.join(:code.priv_dir(:pleroma), "static")

pack_path =
Path.join([
static_path,
Pleroma.Config.get!([:instance, :static_dir]),
"emoji",
pack_name
])

files_to_unzip =
Enum.map(
pack["files"],
fn {_, f} -> to_charlist(f) end
)

{:ok, _} =
:zip.unzip(binary_archive,
cwd: pack_path,
file_list: files_to_unzip
)

IO.puts("Wriring emoji.txt for the #{pack_name} pack")

emoji_txt_str =
Enum.map(
pack["files"],
fn {shortcode, path} -> "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" end
)
|> Enum.join("\n")

File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str)
else
IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"]))
end
end
end

+ 41
- 85
lib/pleroma/emoji.ex Просмотреть файл

@@ -14,6 +14,8 @@ defmodule Pleroma.Emoji do
"""
use GenServer

require Logger

@type pattern :: Regex.t() | module() | String.t()
@type patterns :: pattern() | [pattern()]
@type group_patterns :: keyword(patterns())
@@ -79,96 +81,50 @@ defmodule Pleroma.Emoji do
end

defp load do
finmoji_enabled = Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled)
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []
static_path = Path.join(:code.priv_dir(:pleroma), "static")

emojis =
(load_finmoji(finmoji_enabled) ++
load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end)
emoji_dir_path =
Path.join([
static_path,
Pleroma.Config.get!([:instance, :static_dir]),
"emoji"
])

case File.ls(emoji_dir_path) do
{:error, :enoent} ->
# The custom emoji directory doesn't exist,
# don't do anything
nil

{:error, e} ->
# There was some other error
Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}")

{:ok, packs} ->
# Print the packs we've found
Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}")

# compat thing for old custom emoji handling
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []

emojis =
# Add the things fro
# Deprecated?
(Enum.flat_map(
packs,
fn pack -> load_from_file(Path.join([emoji_dir_path, pack, "emoji.txt"])) end
) ++
load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end)

true = :ets.insert(@ets, emojis)
end

true = :ets.insert(@ets, emojis)
:ok
end

@finmoji [
"a_trusted_friend",
"alandislands",
"association",
"auroraborealis",
"baby_in_a_box",
"bear",
"black_gold",
"christmasparty",
"crosscountryskiing",
"cupofcoffee",
"education",
"fashionista_finns",
"finnishlove",
"flag",
"forest",
"four_seasons_of_bbq",
"girlpower",
"handshake",
"happiness",
"headbanger",
"icebreaker",
"iceman",
"joulutorttu",
"kaamos",
"kalsarikannit_f",
"kalsarikannit_m",
"karjalanpiirakka",
"kicksled",
"kokko",
"lavatanssit",
"losthopes_f",
"losthopes_m",
"mattinykanen",
"meanwhileinfinland",
"moominmamma",
"nordicfamily",
"out_of_office",
"peacemaker",
"perkele",
"pesapallo",
"polarbear",
"pusa_hispida_saimensis",
"reindeer",
"sami",
"sauna_f",
"sauna_m",
"sauna_whisk",
"sisu",
"stuck",
"suomimainittu",
"superfood",
"swan",
"the_cap",
"the_conductor",
"the_king",
"the_voice",
"theoriginalsanta",
"tomoffinland",
"torillatavataan",
"unbreakable",
"waiting",
"white_nights",
"woollysocks"
]

defp load_finmoji(true) do
Enum.map(@finmoji, fn finmoji ->
file_name = "/finmoji/128px/#{finmoji}-128.png"
group = match_extra(@groups, file_name)
{finmoji, file_name, to_string(group)}
end)
end

defp load_finmoji(_), do: []

defp load_from_file(file) do
if File.exists?(file) do
load_from_file_stream(File.stream!(file))


Двоичные данные
priv/static/finmoji/1000px/a_trusted_friend.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 71KB

Двоичные данные
priv/static/finmoji/1000px/alandislands.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 72KB

Двоичные данные
priv/static/finmoji/1000px/association.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 77KB

Двоичные данные
priv/static/finmoji/1000px/auroraborealis.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 225KB

Двоичные данные
priv/static/finmoji/1000px/baby_in_a_box.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 87KB

Двоичные данные
priv/static/finmoji/1000px/bear.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 42KB

Двоичные данные
priv/static/finmoji/1000px/black_gold.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 57KB

Двоичные данные
priv/static/finmoji/1000px/christmasparty.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 92KB

Двоичные данные
priv/static/finmoji/1000px/crosscountryskiing.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 40KB

Двоичные данные
priv/static/finmoji/1000px/cupofcoffee.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 43KB

Двоичные данные
priv/static/finmoji/1000px/education.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 60KB

Двоичные данные
priv/static/finmoji/1000px/fashionista_finns.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 61KB

Двоичные данные
priv/static/finmoji/1000px/finnishlove.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 74KB

Двоичные данные
priv/static/finmoji/1000px/flag.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 60KB

Двоичные данные
priv/static/finmoji/1000px/forest.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 44KB

Двоичные данные
priv/static/finmoji/1000px/four_seasons_of_bbq.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 94KB

Двоичные данные
priv/static/finmoji/1000px/girlpower.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 46KB

Двоичные данные
priv/static/finmoji/1000px/handshake.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 30KB

Двоичные данные
priv/static/finmoji/1000px/happiness.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 39KB

Двоичные данные
priv/static/finmoji/1000px/headbanger.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 51KB

Двоичные данные
priv/static/finmoji/1000px/icebreaker.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 58KB

Двоичные данные
priv/static/finmoji/1000px/iceman.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 236KB

Двоичные данные
priv/static/finmoji/1000px/joulutorttu.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 37KB

Двоичные данные
priv/static/finmoji/1000px/kaamos.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 127KB

Двоичные данные
priv/static/finmoji/1000px/kalsarikannit_f.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 75KB

Двоичные данные
priv/static/finmoji/1000px/kalsarikannit_m.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 51KB

Двоичные данные
priv/static/finmoji/1000px/karjalanpiirakka.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 58KB

Двоичные данные
priv/static/finmoji/1000px/kicksled.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 62KB

Двоичные данные
priv/static/finmoji/1000px/kokko.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 118KB

Двоичные данные
priv/static/finmoji/1000px/lavatanssit.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 125KB

Двоичные данные
priv/static/finmoji/1000px/losthopes_f.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 50KB

Двоичные данные
priv/static/finmoji/1000px/losthopes_m.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 59KB

Двоичные данные
priv/static/finmoji/1000px/mattinykanen.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 104KB

Двоичные данные
priv/static/finmoji/1000px/meanwhileinfinland.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 113KB

Двоичные данные
priv/static/finmoji/1000px/moominmamma.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 165KB

Двоичные данные
priv/static/finmoji/1000px/nordicfamily.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 97KB

Двоичные данные
priv/static/finmoji/1000px/out_of_office.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 69KB

Двоичные данные
priv/static/finmoji/1000px/peacemaker.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 58KB

Двоичные данные
priv/static/finmoji/1000px/perkele.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 51KB

Двоичные данные
priv/static/finmoji/1000px/pesapallo.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 40KB

Двоичные данные
priv/static/finmoji/1000px/polarbear.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 69KB

Двоичные данные
priv/static/finmoji/1000px/pusa_hispida_saimensis.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 44KB

Двоичные данные
priv/static/finmoji/1000px/reindeer.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 43KB

Двоичные данные
priv/static/finmoji/1000px/sami.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 53KB

Двоичные данные
priv/static/finmoji/1000px/sauna_f.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 36KB

Двоичные данные
priv/static/finmoji/1000px/sauna_m.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 34KB

Двоичные данные
priv/static/finmoji/1000px/sauna_whisk.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 96KB

Двоичные данные
priv/static/finmoji/1000px/sisu.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 73KB

Двоичные данные
priv/static/finmoji/1000px/stuck.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 45KB

Двоичные данные
priv/static/finmoji/1000px/suomimainittu.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 66KB

Двоичные данные
priv/static/finmoji/1000px/superfood.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 126KB

Двоичные данные
priv/static/finmoji/1000px/swan.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 41KB

Двоичные данные
priv/static/finmoji/1000px/the_cap.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 35KB

Двоичные данные
priv/static/finmoji/1000px/the_conductor.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 33KB

Двоичные данные
priv/static/finmoji/1000px/the_king.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 89KB

Двоичные данные
priv/static/finmoji/1000px/the_voice.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 75KB

Двоичные данные
priv/static/finmoji/1000px/theoriginalsanta.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 58KB

Двоичные данные
priv/static/finmoji/1000px/tomoffinland.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 68KB

Двоичные данные
priv/static/finmoji/1000px/torillatavataan.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 134KB

Двоичные данные
priv/static/finmoji/1000px/unbreakable.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 76KB

Двоичные данные
priv/static/finmoji/1000px/waiting.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 17KB

Двоичные данные
priv/static/finmoji/1000px/white_nights.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 49KB

Двоичные данные
priv/static/finmoji/1000px/woollysocks.png Просмотреть файл

До После
Ширина: 1000  |  Высота: 1000  |  Размер: 128KB

Двоичные данные
priv/static/finmoji/128px/a_trusted_friend-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 7.8KB

Двоичные данные
priv/static/finmoji/128px/alandislands-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 6.2KB

Двоичные данные
priv/static/finmoji/128px/association-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 8.5KB

Двоичные данные
priv/static/finmoji/128px/auroraborealis-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 11KB

Двоичные данные
priv/static/finmoji/128px/baby_in_a_box-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 8.9KB

Двоичные данные
priv/static/finmoji/128px/bear-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.2KB

Двоичные данные
priv/static/finmoji/128px/black_gold-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 6.2KB

Двоичные данные
priv/static/finmoji/128px/christmasparty-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 8.3KB

Двоичные данные
priv/static/finmoji/128px/crosscountryskiing-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.5KB

Двоичные данные
priv/static/finmoji/128px/cupofcoffee-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.2KB

Двоичные данные
priv/static/finmoji/128px/education-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 6.2KB

Двоичные данные
priv/static/finmoji/128px/fashionista_finns-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 7.5KB

Двоичные данные
priv/static/finmoji/128px/finnishlove-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 5.9KB

Двоичные данные
priv/static/finmoji/128px/flag-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.0KB

Двоичные данные
priv/static/finmoji/128px/forest-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.0KB

Двоичные данные
priv/static/finmoji/128px/four_seasons_of_bbq-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 9.3KB

Двоичные данные
priv/static/finmoji/128px/girlpower-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.3KB

Двоичные данные
priv/static/finmoji/128px/handshake-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 2.7KB

Двоичные данные
priv/static/finmoji/128px/happiness-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.5KB

Двоичные данные
priv/static/finmoji/128px/headbanger-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.9KB

Двоичные данные
priv/static/finmoji/128px/icebreaker-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 7.3KB

Двоичные данные
priv/static/finmoji/128px/iceman-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 12KB

Двоичные данные
priv/static/finmoji/128px/joulutorttu-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 3.1KB

Двоичные данные
priv/static/finmoji/128px/kaamos-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 8.6KB

Двоичные данные
priv/static/finmoji/128px/kalsarikannit_f-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 6.8KB

Двоичные данные
priv/static/finmoji/128px/kalsarikannit_m-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 5.2KB

Двоичные данные
priv/static/finmoji/128px/karjalanpiirakka-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 5.1KB

Двоичные данные
priv/static/finmoji/128px/kicksled-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 7.1KB

Двоичные данные
priv/static/finmoji/128px/kokko-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 11KB

Двоичные данные
priv/static/finmoji/128px/lavatanssit-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 12KB

Двоичные данные
priv/static/finmoji/128px/losthopes_f-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 4.8KB

Двоичные данные
priv/static/finmoji/128px/losthopes_m-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 6.2KB

Двоичные данные
priv/static/finmoji/128px/mattinykanen-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 7.2KB

Двоичные данные
priv/static/finmoji/128px/meanwhileinfinland-128.png Просмотреть файл

До После
Ширина: 128  |  Высота: 128  |  Размер: 11KB

Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить