Задать вопрос
@dj--alex

Как в Lua корректно сохранить canvas в png напрямую?

have no idea...
it just don't work and get some trash useless messages

realfilename=sourcewrite(datatowrite,levelname);
--realfilename - is correct path from savegame operator.
ImageData = GAMEWINDOWCANVAS:newImageData();
filedata = ImageData:encode( "png" );
realfilename=realfilename..".png";
if (ossys~="Android") then
local filepng = io.open(filename, 'wb');
if (filepng~=nil) then filepng:write(filedata); --STRING EXPECTED GOT USERDATA!!!!!!!WTF????!!!!!!!!!!!!!
filepng:close();
end;
end
if (ossys=="Android") then
love.filesystem.write(realfilename, filedata) -- for android
end;
smsg1="realfilenam="..realfilename.."";


У меня вопрос можно ли средствами Lua сохранить png картинку в реальном пути а не в пути который love2d framework подсовывает даже если я не хочу? love.filesystem.setIdentity('realpath');
GAMEWINDOWCANVAS:newImageData():encode('png', realpath..levelname.. 'x2.png');
Сохранение игры идёт сюда. и сюда же должна попасть картинка
.. /home/alex/Документы/R-M2K/M2K_GAME_FOLDER/usr/bin/saves

Однако (!!) вместо этого love2d перехватывает значение пути и приписывает к нему свой "правильный" путь
. /home/alex/.local/share/love/home/alex/Games/M2K/usr/bin/saves/m2ksavex

в результате в папке с сохранениями игры. которая разумеется находится в папке игры нет картинки.

Мне говорят только копированием после создания скриншота командой выше это можно исправить os.rename(src, dst) но это выглядит нецивилизованно.
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@dj--alex Автор вопроса
Рабочий метод который мне подсказали в интернете!

realfilename = sourcewrite(datatowrite, levelname) (тут просто получаю путь от своей функции.)
imagedata = GAMEWINDOWCANVAS:newImageData()
filedata = imagedata:encode( "png" )
realfilename = realfilename .. ".png"
if (ossys ~= "Android") then
local filepng = io.open(realfilename, 'wb')
if (filepng ~= nil) then
filepng:write(filedata:getString()) -- <- this right here; now it's a string. этой важной конверсии не хватало.
filepng:close()
end
else
love.filesystem.write(realfilename, filedata) -- i have a feeling this won't work though, chief. :|
end
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы