Updated Odpowiedź - teraz, że rozumiem go lepiej sobie :-)
Zasadniczo, można base64 kodowania obrazu za pomocą openssl
takiego:
openssl enc -base64 -in image.png > image.b64
Jednakże, jeśli chce ImageMagick
, aby móc go przeczytać, potrzebujesz małego nagłówka na początku, aby powiedzieć ImageMagick
co następuje. Nagłówek powinien zawierać:
data:image/png;base64,
następnie zakodowane base64 swoich danych wygenerowanych przy użyciu wyżej komendy openssl
. Tak więc, w zależności od cech twoja powłoka ma, można zrobić to w ten sposób z instrukcji złożonej w bash
:
{ echo "data:image/png;base64,"; openssl enc -base64 -in input.png; } > image.b64
lub jak to w systemie Windows:
echo data:image/png;base64, > image.b64
openssl enc -base64 -in image.png >> image.b64
Gdy masz zdjęcie na które Format można następnie przystąpić do przetworzenia go ImageMagick
tak:
convert inline:image.b64 result.png
Original Odpowiedź
Po DUŻEJ eksperymentowaniu mogę to zrobić !!!:-)
Zacznij Erica (@emcconville) Setup:
# For example
convert rose: rose.png
# Create base64 file
openssl enc -base64 -in rose.png -out rose.txt
i teraz dodać ten bałagan w ostatnim wierszu:
{ echo "data:image/png;base64,"; cat rose.txt; } | convert inline:- out.jpg
Chyba data:image/png;base64,
nie jest obecny w base64 plik utworzony przez openssl
, więc tworzę złożoną instrukcję, która wysyła to z plikiem do stdin
z ImageMagick
.
Obawiam się, że dał mi zasadniczo ten sam błąd: "convert: corrupt image" data: - '@ error/existence.c/ReadInlineImage/910. " Nie widzę żadnych spacji w oryginalnym pliku innym niż zakończenie linii (unix). – skiphoppy
Czy możesz odtworzyć tę samą wiadomość z nowego obrazu? – emcconville
Tak, otrzymuję go z dowolnym obrazem base64, którego używam. – skiphoppy