精华内容
下载资源
问答
  • 彩色图片变成256级灰阶图片代码,很有帮助的,
  • 项目里集成了一个图片选择库,...下面开始分析代码,首先根据图片像素灰度转为ascii字符,这在网上有现成的java代码,android上只需要改一点api就可以,代码如下。 public static Bitmap createAsciiPic(final S...

    项目里集成了一个图片选择库,可以直接把拍的照片转化为ascii图

    处理代码如下:

    一个实现图片显示出代码格式的图,转换出来

    效果如下 :

    主要代码:

    下面开始分析代码,首先根据图片像素灰度转为ascii字符,这在网上有现成的java代码,android上只需要改一点api就可以,代码如下。

      public static Bitmap createAsciiPic(final String path, Context context) {
            final String base = "#8XOHLTI)i=+;:,.";// 字符串由复杂到简单
    //        final String base = "#,.0123456789:;@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";// 字符串由复杂到简单
            StringBuilder text = new StringBuilder();
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics dm = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(dm);
            int width = dm.widthPixels;
            int height = dm.heightPixels;
            Bitmap image = BitmapFactory.decodeFile(path);  //读取图片
            int width0 = image.getWidth();
            int height0 = image.getHeight();
            int width1, height1;
            int scale = 7;
            if (width0 <= width / scale) {
                width1 = width0;
                height1 = height0;
            } else {
                width1 = width / scale;
                height1 = width1 * height0 / width0;
            }
            image = scale(path, width1, height1);  //读取图片
            //输出到指定文件中
            for (int y = 0; y < image.getHeight(); y += 2) {
                for (int x = 0; x < image.getWidth(); x++) {
                    final int pixel = image.getPixel(x, y);
                    final int r = (pixel & 0xff0000) >> 16, g = (pixel & 0xff00) >> 8, b = pixel & 0xff;
                    final float gray = 0.299f * r + 0.578f * g + 0.114f * b;
                    final int index = Math.round(gray * (base.length() + 1) / 255);
                    String s = index >= base.length() ? " " : String.valueOf(base.charAt(index));
                    text.append(s);
                }
                text.append("\n");
            }
            return textAsBitmap(text, context);
    //        return image;
        }

     

    相对于电脑端有无边无际的txt编辑框,android里text是有字数限制的,所以原始图片如果像素过多的话就要进行尺寸压缩。

     

    而且textPaint的这个设置特别重要textPaint.setTypeface(Typeface.MONOSPACE);字体对效果的影响太大了,失之毫厘谬以千里,这是一个大坑,说多了都是时间。

     

    我在项目里集成了一个图片选择库,可以直接把拍的照片转化为ascii图,碰到一个问题就是拍照图片拿到后都会自动旋转90度,很是困惑,虽然找到了处理方法,但系统为啥要作旋转处理,还请知道的大神告知原因。

      /**
         * 处理旋转后的图片
         *
         * @param originpath 原图路径
         * @param context    上下文
         * @return 返回修复完毕后的图片路径
         */
        public static String amendRotatePhoto(String originpath, Context context) {
    
            // 取得图片旋转角度
            int angle = readPictureDegree(originpath);
    
            // 把原图压缩后得到Bitmap对象
            if (angle != 0) {
                Bitmap bmp = getCompressPhoto(originpath);
                Bitmap bitmap = rotaingImageView(angle, bmp);
                return savePhotoToSD(bitmap, context);
            } else {
                return originpath;
            }
    
        }

     用到的方法

    public static int readPictureDegree(String path) {
        int degree = 0;
        try {
            ExifInterface exifInterface = new ExifInterface(path);
            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return degree;
    }
    
    public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {
        Bitmap returnBm = null;
        // 根据旋转角度,生成旋转矩阵
        Matrix matrix = new Matrix();
        matrix.postRotate(angle);
        try {
            // 将原始图片按照旋转矩阵进行旋转,并得到新的图片
            returnBm = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        } catch (OutOfMemoryError e) {
        }
        if (returnBm == null) {
            returnBm = bitmap;
        }
        if (bitmap != returnBm) {
            bitmap.recycle();
        }
        return returnBm;
    }

    这些代码都在文末的项目里。

     

    按说拿到ascii图后,想要把整个视频转换成ascii字符视频就很简单了。只要把视频逐帧抽成图片,图片转换后,再合成为视频播放出来,但我视频库用的不多,希望有能力的朋友可以帮助完成最后一步。


    最后,也希望朋友们能把一些有趣的想法实践到android项目中来,让搬砖之余,有更多的乐趣。

     

    一个工具类下载地址:

    https://download.csdn.net/download/filyths/10649704

    搬砖使用方法:

    调取安卓自带选择图片方法,调用图片,

    CommonUtil.choosePhoto(this, PictureConfig.CHOOSE_REQUEST);//(工具类的)

    选择成功后回调方法:

     /**
         * 返回的选择后图片方法
         * @param requestCode
         * @param resultCode
         * @param data
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK) {
                if (requestCode == PictureConfig.CHOOSE_REQUEST) {
                    List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
                    String path = "";
                    if (selectList != null && selectList.size() > 0) {
                        LocalMedia localMedia = selectList.get(0);
                        if (localMedia.isCompressed()) {
                            path = localMedia.getCompressPath();
                        } else if (localMedia.isCut()) {
                            path = localMedia.getCutPath();
                        } else {
                            path = localMedia.getPath();
                        }
                    }
                    filepath = CommonUtil.amendRotatePhoto(path, MainActivity.this);
    //                imageView.setImageBitmap(BitmapFactory.decodeFile(filepath));
                    bitmap = CommonUtil.createAsciiPic(filepath, MainActivity.this);
                    imageView.setImageBitmap(bitmap);
                }
            }
        }

    这样就显示在ImageView上面了。

    如果你想把显示的图片保存到你的手机里,调用方法

    public void doSave(View view) {
        CommonUtil.saveBitmap2file(bitmap, System.currentTimeMillis() + "", MainActivity.this);
    }
    

    这样就简单的完成了,然后你就可以跑你的项目看看了,然后去装装逼,给你的女朋友看看,当然 单身狗也可以拿去给朋友秀一波。。。

    展开全文
  • src2png将您的源代码变成漂亮带语法高亮显示的图片
  • \[外链图片转存失败\(.+?\)\((.+?)\)\] ![若图片无法正常加载,请联系作者]($1) 用VSCode 业务需求,CSDN外链图片转换失败会变成非插入图片的格式,再转换成插入图片的格式 ...

    CSDN外链图片转换失败时会变成非插入图片的格式:[外链图片转存失败(图片哈希)(原图链接)],如下图所示
    在这里插入图片描述
    不过我们可以通过正则表达式,再将这些转换成插入图片的格式:![图片说明](图片链接),如下图所示:
    在这里插入图片描述

    正则表达式

    \[外链图片转存失败\(.+?\)\((.+?)\)\]
    
    ![若图片无法正常加载,请联系作者]($1)
    

    用VSCode
    在这里插入图片描述

    展开全文
  • public static void main(String[] args) { createFontImage("红色", new Font(... * 根据str,font的样式将文字变成图片,然后返回一个流 * * @param str 字符串 * @param font 字体 * @param width 宽度 * @...
        public static void main(String[] args) {
            createFontImage("红色", new Font("宋体", Font.BOLD, 50), 400, 400);
        }
    
        /**
         * 根据str,font的样式将文字变成图片,然后返回一个流
         *
         * @param str    字符串
         * @param font   字体
         * @param width  宽度
         * @param height 高度
         */
        public static ByteArrayOutputStream createFontImage(String str, Font font, Integer width, Integer height) {
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            // 创建图片
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
            Graphics g = image.getGraphics();
            g.setClip(0, 0, width, height);
            g.setColor(Color.white);//先用白色填充整张图片,也就是背景
            g.fillRect(0, 0, width, height);
            g.setColor(Color.black); //在换成黑色
            FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font);
            // 设置画笔字体
            g.setFont(font);
            int strWidth = metrics.stringWidth(str);
            int strHeight = metrics.getHeight();
            int top = (height - strHeight) / 2 + metrics.getAscent();//可以上下居中
            int left = (width - strWidth) / 2; //左边位置,这样可以左右居中
            g.drawString(str, left, top); // 画出字符串,
            g.dispose();
            //将图片输出到ByteArrayOutputStream中
            try {
                ImageIO.write(image, "png", os);
            } catch (IOException e) {
                System.out.printf("IOException:%s", e);
                StreamClose.close(os);//出了异常则在内部关闭流,StreamClose是我自己写的关闭流的工具
            }
            return os;
        }
    
    展开全文
  • 废话不多说,直接上代码 from PIL import Image import numpy as np a = np.asarray(Image.open("a.jpg").convert("L")).astype("float") depth = 10 #设置深度为10 grad = np.gradient(a) #对数组a求梯度 grad...

    废话不多说,直接上代码

    from PIL import Image
    import numpy as np
    
    a = np.asarray(Image.open("a.jpg").convert("L")).astype("float")
    
    depth = 10  #设置深度为10
    grad = np.gradient(a)   #对数组a求梯度
    
    grad_x, grad_y = grad
    grad_x = grad_x*depth/100
    grad_y = grad_y*depth/100
    A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
    uni_x = grad_x/A
    uni_y = grad_y/A
    uni_z = 1./A
    
    vec_el = np.pi/2.2  #θ角度
    vec_az = np.pi/4.   #α角度
    dx = np.cos(vec_el)*np.cos(vec_az)
    dy = np.cos(vec_el)*np.sin(vec_az)
    dz = np.sin(vec_el)
    
    b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)
    b = b.clip(0, 255)
    
    im = Image.fromarray(b.astype('uint8'))
    im.save("b.jpg")
    

    最后的效果

    不得不说,真的很厉害

    展开全文
  • 变成这样的gif动画: 是不是很神奇。。。。 先看html 、样式。很简单,一个div,然后引入图片。 动态效果 .anim{ width :200px; height : 300px; background:url(animl1.jpg) ; ...
  • 如果需要将你的网站全站和图片变灰,只需要加几段css控制就可以了 效果展示 方法一 <!-- 可以是整个网站变成灰色的 --> html { -webkit-filter: grayscale(100%); filter: progid:...
  • 需求:在用户上传图片时添加图片水印,水印图大小需要...问题:水印图压缩之后,原本透明底变成白色底; 解决:小改tp5封装的图片处理类的压缩方法; 过程:定位至:thinkphp\labrary\think-image\src->crop(...
  • 代码 import cv2 # 安装见 https://blog.csdn.net/qq_43657442/article/details/109276236 from skimage import io # 若安装不上,或很慢,见https://blog.csdn.net/qq_43657442/article/details/109526813 import ...
  • 我们知道图片除了最普通的彩色图,还有很多类型,比如素描,卡通,黑白等等,今天就介绍如何使用python和opencv来实现图片变素描图。 首先将彩色图转换成灰度图; 对灰度图进行求其反色的操作; 对第2步得到的结果...
  • 在Android开发当中,我们会遇到多张图片需要改变背景颜色,我们不能用代码写死,但是我们setBackgroundColor方法改变是会被把我们背景变成直角的,但是从用户体验感的角度来讲是带有圆角的图片会更好一点。...
  • 代码=图片 图片=代码 把JS代码变成图片,加密与压缩并行 提供解码方法
  • 在jsp代码添加背景图片

    万次阅读 多人点赞 2018-10-22 22:16:02
    为了把注册页面的背景做的好看一些,可以添加背景图片 第一步 把图片添加到webroot文件夹里面 然后在myeclipse的webroot会看到这张图片www.jpg ... 变成&... 最后运行代码,就可以看到背景图...
  • Svg代码图片

    千次阅读 2019-09-16 19:02:28
    有个需求将编辑器编辑好的svmXml代码转成图片然后上传到图片服务器!在网上招了好多的例子!发现大部分都要用到第三方的js插件!所以为了方便就自己写了个简单点的!下面分享出来!也算自己的一个笔记吧! 直接上...
  • 利用pillow模块处理,用20多行Python代码将普通图片转为字符画操作 这里是目录哟像素RGB值灰度值计算灰度值映射字符函数图片导入及尺寸设置遍历图片获取字符字符画输出和导入文件 哈喽,努力赚钱买生发水的大灰狼又...
  • EXCEL 或WPS 自动插入图片代码代码、例子、图片文件 完整,可运行。
  • 新建的时候命名错误了,打成了xlm,在改回xml后,无论怎么删除,或者在新的项目中,只要再次使用applicationContext这个文件名打开...[图片说明](https://img-ask.csdn.net/upload/201602/15/1455511495_940349.png)
  • 截取HTML中代码块生成图片

    千次阅读 2015-11-03 12:06:08
    然后我就各种找有没有C#把HTML代码块生成图片代码。结果无功而返。 微软并没有提供给我们把HTML中的某一块生成图片的类库。但是提供给我们把整个HTML页面生成图片的控件WebBrowser。 WebBrowser位于System.Windows...
  • android图片处理,让图片变成圆形

    万次阅读 2016-08-10 19:57:06
    简单的操作让你的图片变成圆形
  • ![图片说明](https://img-ask.csdn.net/upload/201508/31/1441034937_900911.png)
  • java后台--base64编码格式变成图片

    千次阅读 2019-04-19 16:42:47
    java后台–base64编码格式变成图片 当图片转成了base64格式后,传到后台对base64解码并生成图片 如一下代码所示。 /** * @Description: base64字符串转化成图片 * @param: imgStr * @Return: */ @...
  • CSS代码鼠标经过图片变换图片

    万次阅读 2016-11-17 23:49:42
    onMouseOver="this.src='#'" onMouseOut="this.src='#'">
  • 代码转为图片

    千次阅读 2020-05-07 15:46:35
    <div id="card"> <div > 长按识别图中二维码 <br> 参与活动 </div> </div> id 里面的内容是你要打印的内容,样式自己去修改 以下的代码,是显...
  • 把本地图片变成网址

    千次阅读 2018-01-19 14:42:28
    解决办法:百度 打开QQ空间---相册---点击上传---把你的图片上传到QQ空间 成功后右键图片---复制图片网址,然后就OK了

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,833
精华内容 79,533
关键字:

代码是如何变成图片的