在这里下载带有已编译可执行文件的源代码(大小:161 KB(165,230字节)):http://www.eyeClaxton.com/download/delphi/ColorSwap.zip
原始位图大小仅为28x15像素,颜色为浅蓝色.我希望能够单击右侧的任何彩色面板,并将原始位图颜色从浅蓝色更改为面板的颜色.
如果你点击灰色面板,你可以看到这个在行动,我只是无法弄清楚如何正确使用其他颜色.任何帮助将不胜感激.如果需要更多信息,请随时询问.
我之前已经问过这个问题,但是我无法弄清楚我想要做什么,所以我希望这个问题有点清楚.

unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TMainFrm = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
Label2: TLabel;
BeforeImage1: TImage;
AfterImage1: TImage;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Image1: TImage;
Label3: TLabel;
Panel10: TPanel;
Memo1: TMemo;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure Panel4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它运行大量(~100)的位图 - 即音乐封面艺术.位图以两种方式使用 - 作为大背景和小(50dip)图标.将两个大小预加载和缓存为单独的位图是否有意义?我已经实现了两种方法(使用大位图作为图标|缓存两种尺寸),但我看不到实际的性能差异.这种情况的最佳做法是什么?
我有一个比我正在放入的ImageView大的Bitmap.我将ScaleType设置为center_inside.如何获得缩小图像的尺寸?
我目前正在研究一个steganogrpahy android应用程序作为一个类项目.我创建了一个对象,它将在另一个图像中编码图像并返回编码的位图.此代码在单独的线程中运行.
new Thread(new Runnable()
{
public void run()
{
Bitmap encoded_image = null;
Encryptor encryptor = new Encryptor();
encoded_image = encryptor.encode_image_in_image(
image_location,message_image_location);
}
}).start();
Run Code Online (Sandbox Code Playgroud)
在对位图进行编码之后,我将位图传递给我创建的文件浏览器活动,以将位图保存为png图像.此方法适用于较小的图像,但是,当编码大图像并将其传递给子活动时,应用程序会冻结并返回主活动.
private void pass_image_to_file_browser( Bitmap image )
{
Intent intent = new Intent(Encrypt.this,FileBrowser.class);
intent.putExtra( Intent.EXTRA_STREAM, image );
startActivity( intent );
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle bundle = this.getIntent().getExtras();
Bitmap image = bundle.getParacable(Intent.EXTRA_STREAM);
}
Run Code Online (Sandbox Code Playgroud)
我假设一个大的位图是使用意图在活动之间发送大的,所以我决定简单地将图像保存在临时位置并将图像的位置传递给子活动.然后将png图像保存在用户指定和删除临时图像文件的位置.
private void save_bitmap( Bitmap image, String location )
{
FileOutputStream fileOutputStream = new FileOutputStream(location);
BufferedOutputStream buffered_output_stream = …Run Code Online (Sandbox Code Playgroud) 可以从传递给R.drawable字符串的资源加载图像吗?
我正在尝试这个:
public static Bitmap LoadBitmap(Context context, String filename)
{
Bitmap image;
image = BitmapFactory.decodeResource(context.getResources(), R.drawable.filename);
return image;
}
Run Code Online (Sandbox Code Playgroud)
引发以下错误:
filename cannot be resolved or is not a field
Run Code Online (Sandbox Code Playgroud)
我正在尝试在R文件中创建一个常量字段但是抛出以下行:
R.java was modified manually! Reverting to generated version!
Run Code Online (Sandbox Code Playgroud)
我将非常感谢您的帮助或建议.谢谢
我正在尝试从存档加载位图.我在位图类中使用了一个指向文件名的字符指针,然后在它位于同一目录中时加载它.位图加载类经过了很好的测试,我不想太乱用它.问题是它使用文件指针加载并执行其所有文件操作.有没有办法模拟文件指针,实际上是从内存中的块读取?
对不起,如果这是一个奇怪的问题.
大家好我有一个应用程序,它在圆点上放置一个圆圈,并用滑块改变圆圈内像素的rgb值.我想使用asynctask来加速改变像素的过程.我不知道从哪里开始.我已经在活动文件的底部注释掉了一些代码,因为这是我第一次参加它:).任何人都可以指出我如何实现这一目标的正确方向.该活动调用自定义视图(touchview),据我所知,必须在UI线程上实例化asynctask.我正在考虑在onPreExecute()中初始化滑块等,但不确定如何将所有工作人员的东西放在doInBackground()中.任何帮助将不胜感激,谢谢马特.
public class Jjilapp extends Activity {
private Button b1;
private static final String TAG = "*********jjil";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, "***********inside oncreate about to set contentview = ");
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.touchview);
final TouchView touchView = (TouchView)findViewById(R.id.touchview);
final HorizontalSlider slider = (HorizontalSlider)findViewById(R.id.slider);
touchView.initSlider(slider);
b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "onClickButton1");
}
});
}//end of oncreate
/* private class UpdateCirclePixels extends AsyncTask<Integer,Integer,Integer>{
@Override
protected void onPreExecute(){
final TouchView touchView …Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题.
这是我的简化代码,用于解释:
class Bitmap1
{
public Bitmap nImage;
public IntPtr data;
public Bitmap1()
{
int w = 2450;
int h = 2450;
this.data = Marshal.AllocHGlobal(w*h);
nImage = new Bitmap(w, h, w, PixelFormat.Format8bppIndexed, data);
}
}
Run Code Online (Sandbox Code Playgroud)
当w和h等于2448时,如果我调用构造函数,一切都运行良好.
但是当h和w等于2450时,我ArgumentException看起来似乎是由"新的Bitmap(...)"启动的.
我无法理解,文档并没有说有限的尺寸Marshal.AllocHGlobal.
怎么了?还有其他方法可以做我想要的吗?
非常感谢你.
我发现下面用java编写的代码在缓冲图像上放置了鱼眼效果.是否可以在不同的图像格式上使用此代码,例如jpeg或bitmap?我已经尝试用位图替换bufferedImage而不是使用set/getARGB我用位图的get/setPixel替换了.我只是得到一个黑色位图....我知道有点长镜头:).
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.jhlabs.image.InterpolateFilter;
class Filters{
float xscale;
float yscale;
float xshift;
float yshift;
int [] s;
public Filters(){
}
public BufferedImage barrel (BufferedImage input, float k){
float centerX=input.getWidth()/2; //center of distortion
float centerY=input.getHeight()/2;
int width = input.getWidth(); //image bounds
int height = input.getHeight();
BufferedImage dst = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); //output pic
xshift = calc_shift(0,centerX-1,centerX,k);
float newcenterX = width-centerX;
float xshift_2 = calc_shift(0,newcenterX-1,newcenterX,k);
yshift = calc_shift(0,centerY-1,centerY,k);
float newcenterY = height-centerY;
float yshift_2 = …Run Code Online (Sandbox Code Playgroud)