前からやってみたかった手書き風の画像処理をしてみた。
#include "ipmpack.hsp" dialog "bmp;*.gif;*.jpg",16 exist refstr if (strsize==-1){end}else{picload refstr:title getpath(refstr,8)} mref vram,66 size=ginfo(26),ginfo(27) ipm_m_vraminit buf1,size(0),size(1) ipm_m_vramcopy buf1,vram,size(0),size(1) n=5 ipm_f_circle f_fil,n ipm_m_double2int f_fil,i_fil,n*n ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),n*n-n,0 ipm_m_vramcopy vram,buf1,size(0),size(1) ipm_codekuwaharafilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),3,3,0 ipm_m_vraminit buf2,size(0),size(1) n=3 ipm_f_gauss f_fil,n,2 f_fil(n*n/2+n/2-1)=-1.0+f_fil(n*n/2+n/2-1) ipm_m_double2int f_fil,i_fil,n*n ipm_codefilter varptr(buf1),varptr(buf2),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),0,0,0,0 sdim table,257:repeat 256:if (cnt<=5){poke table,cnt,0}else{poke table,cnt,limit(cnt*3,50,255)}:loop ipm_codegrayscale varptr(buf2),varptr(buf2),0,0,size(0),size(1),size(0),size(1),varptr(table),varptr(table),varptr(table) ipm_codesubtraction varptr(buf1),varptr(vram),0,0,size(0),size(1),size(0),size(1),varptr(buf2) n=2 ipm_f_average f_fil,n*n ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),1,0 ipm_m_vramcopy vram,buf1,size(0),size(1) n=2 ipm_f_circle f_fil,n*n ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),n*n-n,0 ipm_m_vramcopy vram,buf1,size(0),size(1)
それにしてもこのblog(MSN Spaces blog)、pngとかでアップできないから困る!
JPEGにしても勝手に圧縮率変えて再圧縮されて汚くなるし。
MSN Spaces余分なことするんじゃねえええええ。
50kb未満のサイズならそのまま通して下さい。
そもそも今時JPEGって、JPEG2000が標準になってくれればいいなあ。
コメント