【问题标题】:How to add custom frames to images programmatically如何以编程方式将自定义帧添加到图像
【发布时间】:2013-03-07 17:55:32
【问题描述】:

我想创建一个应用程序,我需要在其中向图像添加框架。我不知道要重新分级。我有一个链接,其中框架被添加到图像中。任何人都可以帮助我。

这里是link

@提前致谢!!

【问题讨论】:

    标签: android frames image-editing


    【解决方案1】:

    有很多方法。一种非常简单的方法是,您可以在 View 的 onDraw 方法中在图像上绘制自定义框架,然后在 Bitmap 中绘制视图。还有另一种方法,将帧像素数据写入图像像素数据,然后将新图像与帧组合,您可以使用openCV或其他第三方库来解码图像。

    【讨论】:

    • 感谢您的快速回复,我想查看底部的框架,单击图像应与该框架一起添加的框架..是否可能
    【解决方案2】:

    编辑:图库OnItemClickListener

    gallery.setOnItemClickListener(new OnItemClickListener() {
            Bitmap frame = null, out = null;
    
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
               Bitmap urImage = BitmapFactory.decodeResource(getResources(),
                        R.drawable.urBackgroundImageID);//edit
                frame = BitmapFactory.decodeResource(getResources(),
                        frames[arg2]);
                out = combineImages(frame, urImage);
                imageView.setImageBitmap(out); //add "out" for ur ImageView
            }
        });
    

    frames[] 是可绘制对象的数组,即不同的帧

    下面的方法会动态组合两张图片

    public Bitmap combineImages(Bitmap frame, Bitmap image) {
    
        Bitmap cs = null;
        Bitmap rs = null;
    
        rs = Bitmap.createScaledBitmap(frame, image.getWidth(),
                image.getHeight(), true);
    
        cs = Bitmap.createBitmap(rs.getWidth(), rs.getHeight(),
                Bitmap.Config.RGB_565);
    
        Canvas comboImage = new Canvas(cs);
    
        comboImage.drawBitmap(image, 0, 0, null);
        comboImage.drawBitmap(rs, 0, 0, null);
    
        if (rs != null) {
            rs.recycle();
            rs = null;
        }
        Runtime.getRuntime().gc();
    
        return cs;
    }
    

    你可以尝试不同的整数值

    comboImage.drawBitmap(image, 0, 0, null);
    comboImage.drawBitmap(rs, 0, 0, null);
    

    我在哪里放了0 以获得图像上所需的帧位置。

    【讨论】:

    • @thanks nidhi_adiga ,可以在单击底部框架时在底部显示一些自定义框架,图像将与框架一起设置。?
    • 是的,您可以将一些框架放在水平画廊视图中,并且画廊 onItemclick 您可以将特定框架设置为图像
    • 没有画廊 OnItemClick 你必须调用上面的方法传递帧和图像。
    • 很酷,但我仍然有些困惑!我在图像视图中有不同的图像,所以画廊项目点击它不起作用!
    • Canvas类型的drawBitmap(Bitmap, float, float, Paint)方法不适用于参数(ImageView, int, int, null)
    【解决方案3】:
     <FrameLayout
             android:id="@+id/frame"
             android:layout_width="120dp"
            android:layout_height="120dp"
            android:foreground="@drawable/your frame...">
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_margin="10dp"
            android:layout_gravity="center"
            android:src="@drawable/ic_launcher" />
        </FrameLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多